我正在开发一个React Native App。在我的代码中,我从服务器获取数据。这个数据在我的ListView中使用,哪个参数是dataSource。这段代码实际上有效。现在我想用数据填充数组,只有当值不存在时才会填充。
所以:如果index大于-1,则将值推送到数组:
index.html
在我的调试器中,我看到了这一行:
if (friendsArray.indexOf(x.id) > -1) {
friendsArray.push(x);
self.setState({
dataSource: self.state.dataSource.cloneWithRows(friendsArray)
});
}
每次都会跳过......有什么想法吗?
答案 0 :(得分:3)
我相信你在这里有两个错误。
首先,如果要在项目不在数组中时执行推送,则需要执行friendsArray.indexOf(x.id) == -1
。检查> -1
是否检查该项目中是否已存在该项目。
其次,您正在检查数组中是否x.id
,然后推送x
。您可能想要检查数组中是x
还是推x.id
?如果是前者(你想检查数组中是否有x
),你需要一个不同的解决方案,因为javascript中的对象总是会失败进行相等比较。您可能希望做一些事情,例如检查friendsArray中的任何对象是否具有与您尝试推送的对象的id匹配的ID。这可以通过以下方式实现:
if (friendsArray.filter(function(a) { return a.id == x.id; }).length == 0) {
// friendsArray does not contain an object with that id
}