Tim*_*Tim 10 javascript arrays angularjs
使用角度数组如何在两个数组之间添加和删除元素?我有$scope.results
和$scope.list
结果数组是调用WebAPI的结果,我允许用户选择他们想要添加到第二个数组的元素.如何从第一个添加到第二个并同时从第一个删除?
angular.forEach($scope.results, function (item) {
if (item.selected) {
$scope.list.push(item);
//CODE TO REMOVE item from $scope.results here.
};
});
Run Code Online (Sandbox Code Playgroud)
另外,如果我进行第二次搜索并尝试将第一个数组中的相同成员添加到我的第二个数组(已经有此用户),我如何防止向第二个数组(列表)添加重复项?.
下面是我想要在数组之间传输的对象的示例.id字段是唯一性的指标.
您可以获取索引作为 angular.forEach 的第二个参数。然后我们拼接以从原始数组中删除该项目。检查下面的代码。
angular.forEach($scope.results, function (item, index) {
if (item.selected) {
$scope.list.push(item);
$scope.results.splice(index, 1);
};
});
Run Code Online (Sandbox Code Playgroud)
我刚刚意识到在 angular.forEach 循环中使用 splice 有一个缺点,它会在删除项目后重新索引数组。因此,如果删除某个项目,将跳过紧邻的下一个项目。
所以下面是正确的解决方案。
var len = $scope.results.length;
while (len--) {
var item = $scope.results[len];
if (item.selected) {
$scope.list.push(item);
$scope.results.splice(len, 1);
};
}
Run Code Online (Sandbox Code Playgroud)
谢谢。
归档时间: |
|
查看次数: |
2739 次 |
最近记录: |