[英]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;
});
});
更新
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.