簡體   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