我正在尝试使用下划线比较 2 个对象,特别是我正在尝试比较“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 和 typeyId 跟踪类型)。
我的第一次尝试有效,但它只会删除第一个。我的猜测是因为我从 0++ 开始循环,并且当我删除第一个索引时索引正在更改,因此 splice 的目标是错误的项目。但我不确定,并且需要一些帮助。感谢您的阅读!
最佳答案
只需使用_.filter即可。
$scope.types = _.filter($scope.types, function (type) {
return _.some($scope.storeTempName, function (it) { return it.id == type.typeId })
})
关于javascript - 检查一个对象中的项目是否存在于另一个对象中(使用下划线),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27316462/