繁体   English   中英

Underscore.js过滤操作可动态创建对象列表

[英]Underscore.js filter operation to create a list of object dynamically

我完成了以下操作,以遍历AngularJS中的两个对象列表并有条件地创建一个新的对象列表。

$scope.loading = true;
$scope.toUpdate = [];
for (var i = 0; i < changedItems.length; i++) {
  for (var j = 0; j < $scope.originalItems.length; j++) {
    if (changedItems[i].AttributeName == $scope.originalItems[j].AttributeName 
        && changedItems[i].Value != $scope.originalItems[j].Value) {
          $scope.toUpdate.push(changedItems[i]);
    }
  }
}

当用户更改值时,我正在创建对象列表( $scope.originalItems具有原始值)。

我将其发送到MVC控制器以更新更改。

我这样做是因为我不需要更新那些未更改的值。

这种方法需要进行多次迭代。

需求:

我确信可以使用Underscore.js以直接的方式完成操作 ,但我无法做到。

需要帮助将此逻辑转换为下划线。

您的代码可以这样转换为Underscore:

_.each(item,function(i){
    _.each($scope.previous,function(p) {
         if (i.AttributeName == p.AttributeName && i.Value != p.Value) 
          $scope.toUpdate.push(i);
    });
});

但是我认为您想避免重复的项目,那么您可以尝试以下操作:

$scope.toUpdate = _.filter(item,function(i) {
    return _.any($scope.previous,function(p){
        return i.AttributeName == p.AttributeName && i.Value != p.Value;
    });
});

的jsfiddle

更新

检查以下文档: .each .filter _.any

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM