为什么将一个值推入我的数组被跳过了

Why pushing a values into my array is beeing skipped?

本文关键字:我的 数组 过了 一个 为什么      更新时间:2023-09-26

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