【发布时间】:2017-07-14 23:50:12
【问题描述】:
我正在用数据填充表格 - 使用 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% 按预期工作并处理返回 null 的 indexOf...但这不是正确处理它的方法 - 我假设这种异常处理是,嗯,应该用于罕见的例外情况,并且不应该像后端一样在前端使用。
如何处理上述 Javascript 代码中返回 null 的 indexOf?它可能在正在填充的任何源列中返回 null。
【问题讨论】:
-
indexOf 应该返回 8 个
-1或任何索引,从不为空。如果它抛出错误,那不是因为它返回null。您可以使用示例数据在 sn-p 中完成这项工作吗? -
indexOf在数组上运行时永远不会返回null;您前面的变量之一(backendInfo或其属性之一)必须是罪魁祸首。您得到的确切错误文本是什么? -
对不起。我的措辞很糟糕。输入数据可能有一个值为空的键。我正是这个意思。我得到的错误是
Uncaught TypeError: Cannot read property 'indexOf' of null -
那么错误类似于
Cannot read property 'indexOf' of undefined"吗?这会有所作为 -
@Randy 我只是把错误放在上面-
Uncaught TypeError: Cannot read property 'indexOf' of null
标签: javascript arrays reactjs fixed-data-table