检查一个对象中的项是否存在于另一个对象中(使用下划线)

时间:2014-12-05 12:59:41

标签: javascript angularjs underscore.js

我正在尝试使用下划线比较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正在针对一个假项目。我不确定,可以使用一些帮助。谢谢你的阅读!

1 个答案:

答案 0 :(得分:1)

只需使用_.filter。

$scope.types = _.filter($scope.types, function (type) {
    return _.some($scope.storeTempName, function (it) { return it.id == type.typeId })
})