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

Check if item from one object exists in another (using underscore)

本文关键字:一个对象 下划线 存在 项目 是否 检查 于另      更新时间:2023-09-26

我正在尝试使用下划线比较 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 和 typyId 跟踪类型)。

我有第一次尝试,但它只会删除第一次。我的猜测是,这是因为我从 0 ++ 循环,当我删除第一个索引时索引正在发生变化,因此拼接针对的是虚假项目。不过我不确定,可以使用一些帮助。感谢您的阅读!

只需使用 _.filter。

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