我正在用数据填充表 - 使用fixed-data-table
,这是一个React.js组件。但是,在现阶段这并不重要。如何在不使用try/catch(err)的情况下处理indexOf返回'null'?
表中有问题源于的搜索框。
首先,这里是代码的有趣部分。
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。
的indexOf应该返回eighter'-1'或任何索引,永远不为null。如果它抛出一个错误,那不是因为它返回null。您可以使用样本数据在片段中完成此项工作吗? – Randy
'indexOf'在数组上运行时永远不会返回'null';你的一个前面的变量('backendInfo'或它的一个属性)必须是罪魁祸首。什么是你得到确切的错误文字? – gyre
对不起。我的自言自语很差。输入数据可能有一个键值为null的键。我正是这个意思。我得到的错误是'未捕获的TypeError:无法读取属性'indexOf'的空' – cbll