javascript - 在添加对象之前如何检查对象是否已存在于数组中?

标签 javascript angularjs arrays

我遇到了这个算法问题,我想在添加对象之前检查对象是否已存在于我的数组中。

我尝试了许多不同的方法(indexOf、filter...),最后一次尝试是使用 angular.foreach。

问题是我的 $scope.newJoin 始终为空。我明白为什么,这是因为 if 从未被读取,因为我的 $scope.newJoin 的大小为 0,但我不知道如何解决这个问题...

<小时/>

$scope.newJoinTMP 由:6 个对象组成,每个对象都有一个 timePosted 属性(用于比较这些不同的数组对象)。

$scope.newJoin 是一个空数组。我想用 $scope.newJoinTMP 内的对象填充它,但要确保每个对象都有一次,而不是相同的两次($scope.newJoinTMP 可以有重复项)内部对象,但 $scope.newJoin 不得)。

                    angular.forEach($scope.newJoinTMP, function(item) 
                    { 
                       
                        angular.forEach($scope.newJoin, function(item2)
                        {
                            if (item.timePosted === item2.timePosted) 
                            {
                                //snap.val().splice(snap.val().pop(item));
                                console.log("pop");
                            }
                            else
                            {
                                $scope.newJoin.push(item);
                                console.log("newJoin :", $scope.newJoin);
                            }
                        });
                    });

最佳答案

if(!$scope.newJoin.find(el=>item.timePosted===el.timePosted){      
      $scope.newJoin.push(item);
      console.log("newJoin :", $scope.newJoin);
}

您不想推送到 forEach 内部,因为它会推送多次...

关于javascript - 在添加对象之前如何检查对象是否已存在于数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43870861/

相关文章:

javascript - 循环遍历数组的有效方法?

javascript - 在 map 上突出显示自定义位置

angularjs - 如何使用 spring boot 允许 access-control-allow-origin

javascript - AngularJS。装修模型

c++ - 在不创建新 int[size] 的情况下声明数组时出现 SIGSEGV 错误

javascript - React Relay 项目目录结构组织

javascript - 如何创建 html 表格周 View ? (日历)

javascript - AngularJS - 使用指令允许 jQuery 单击事件触发 ng-click

c - 为什么排序后数组元素发生了变化,C

java - 将 YUV_420_888 转换为字节数组