我已经完成以下操作来遍历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。
答案 0 :(得分:1)
您可以将代码转换为下划线:
_.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;
});
});
<强>更新强>