为什么要将值推入我的数组?

时间:2016-01-03 17:58:54

标签: javascript react-native

我正在开发一个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)
            });
        }

每次都会跳过......有什么想法吗?

1 个答案:

答案 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
}