如何在不使用try / catch(err)的情况下处理indexOf返回'null'?

时间:2017-02-24 08:13:26

标签: javascript arrays reactjs fixed-data-table

我正在使用fixed-data-table填充一个包含数据的表,这是一个React.js组件。但是,在现阶段这不是那么重要。

该表有一个搜索框,问题源自。

首先,这是代码中有趣的部分。

for (var index = 0; index < size; index++) {
            if (!filterBy || filterBy == undefined) {
                filteredIndexes.push(index);
            }
            else {

                var backendInfo = this._dataList[index];

                var userListMap = hostInfo.userList;

                var userListArr = Object.values(userListMap);


                function checkUsers(){
                    for (var key in userListArr) {
                        if (userListArr.hasOwnProperty(key) && userListArr[key].text.toLowerCase().indexOf(filterBy) !== -1) {
                            return true;
                        }
                    }
                    return false;
                }


                if (backendInfo.firstName.indexOf(filterBy) !== -1 || backendInfo.lastName.toLowerCase().indexOf(filterBy) !== -1 || backendInfo.countryOrigin.toLowerCase().indexOf(filterBy) !== -1
                    || backendInfo.userListMap.indexOf(filterBy) !== -1) {
                    filteredIndexes.push(index);
                }

            }
        }

如果你在表格中输入了一些东西,并且一列从用户输入返回null,那么这会被渲染并且最后一部分会抛出错误。

问题是,如果我将最后一部分更改为..

,我可以使代码工作
        try {
            if (backendInfo.firstName.indexOf(filterBy) !== -1 || backendInfo.lastName.toLowerCase().indexOf(filterBy) !== -1 ||    backendInfo.countryOrigin.toLowerCase().indexOf(filterBy) !== -1
            || backendInfo.userListMap.indexOf(filterBy) !== -1) {
            filteredIndexes.push(index);
            }
        }
        catch(err) {
            console.log('Exception')
        }

使用try / catch,它按预期工作100%并处理indexOf返回null ...但这不能正确处理它 - 我假设这种异常处理是,好吧,应该是罕见的例外,并且不应该像前端一样真正地用在前端。

如何在上面的Javascript代码中处理indexOf返回null?它可能在正在填充的任何源列中返回null。

0 个答案:

没有答案