我正在使用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。