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

标签 javascript angularjs underscore.js

我正在尝试使用下划线比较 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/

相关文章:

javascript - AngularJS $uibModal 不工作

javascript - 在javascript中将数字美化为最接近的数字,末尾加零

javascript - 使用 Moment 按天合并每小时日期列表

javascript - 按给定长度获取两点之间的位置

javascript - 如何在 Angular/Nodejs 中使用异步/等待

javascript - md-datepicker 从数组中过滤日期

javascript - underscore.js 根据另一个对象过滤一个对象数组

javascript - 下划线 _.throttle 如果在超时内发生模糊则忽略输入

javascript - 直接导航到子模板时, handle 绑定(bind)不适用于父模板

javascript - 如何使用多个表数据仅渲染一次页面而它们之间没有关系?