为什么将一个值推入我的数组被跳过了
Why pushing a values into my array is beeing skipped?
我正在开发一个React Native应用程序。在我的代码中,我从服务器获取数据。此数据在我的ListView中使用,该参数为dataSource。这段代码实际上是有效的。现在我想用数据填充数组,只有当值还不存在时。
因此:如果索引大于-1:则将值推送到数组:
if (friendsArray.indexOf(x.id) > -1) {
friendsArray.push(x);
self.setState({
dataSource: self.state.dataSource.cloneWithRows(friendsArray)
});
}
在我的调试器中,我看到了行:
friendsArray.push(x);
每次都会被跳过。。。有什么想法吗?
我相信这里有两个错误。
首先,如果您想在一个项不在数组中时执行推送,那么您需要执行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
}
相关文章:
- 如何将数字切成更小的数字以适合我的数组
- jQuery.hide()不适用于我的数组
- 为什么这个 fs.readFile 循环没有将其结果推送到我的数组
- 获取我的数组中的每个 ID 映像 src
- 我想重新排列我的数组和其他数组一样,这个数组是键和值
- 无法将所有位置值保存到我的数组中
- 为什么我的数组长度没有增加
- 如果他们不这样做,就从我的数组中删除东西't没有前缀
- 为什么我的jQuery.map不能在这里组合我的数组
- 是php json_encode&AJAX破坏了我的数组
- 我们可以发送数据到控制器,直到我的数组变空
- 为什么我的数组没有按照将对象推入数组的方式排序
- 将一个元素附加到我的数组中
- 我的数组中的每个元素都被最后一个元素推入覆盖
- 如何在桌面上打印我的数组并替换为排序数组
- 为什么我的数组无法使用 innerhtml
- 为什么我的数组在 Javascript 中分离出来
- 我的数组子类不调用超构造函数
- Javascript 正则表达式来匹配我的数组中的表情符号
- 为什么我的数组在我的 savetime 函数中未定义,但在其他函数中正常运行