我正在尝试使用下划线比较2个objets,特别是我试图比较" id
"的键/值。 (因为里面的其他东西会改变)。我基本上只想检查对象A是否有对象B没有的项目,将其从对象A中删除。这是我的尝试:
for(var c=0;c<$scope.types.length;c++){
var real = _.some($scope.storeTempName, function(it) {
return it.id == $scope.types[c].typeId;
});
if(real){
}else{
$scope.types.splice(c,1);
}
}
其中$scope.storeTempName
是对象B而$scope.types
是对象A.因此如果$scope.types
有$scope.storeTempName
没有,请删除它(按ID和typyId跟踪类型) 。
这是我的第一次尝试,但它只会删除第一次。我的猜测是因为我从0 + +循环,当我删除第一个索引时,索引正在改变,因此splice正在针对一个假项目。我不确定,可以使用一些帮助。谢谢你的阅读!
答案 0 :(得分:1)
只需使用_.filter。
$scope.types = _.filter($scope.types, function (type) {
return _.some($scope.storeTempName, function (it) { return it.id == type.typeId })
})