我遇到了这个算法问题,我想在添加对象之前检查对象是否已存在于我的数组中。
我尝试了许多不同的方法(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/