gpt4 book ai didi

javascript - 在 angularjs 数组中使用切片

转载 作者:行者123 更新时间:2023-12-03 10:26:04 27 4
gpt4 key购买 nike

在我的 angularjs 应用程序中,我需要从数据数组中手动​​删除或添加旧/新数据(服务在循环中执行)。对于删除,我使用 slice();但有一个问题:该项目已正确删除,但 execVerif_distant();不为下一个项目执行。用我的实际代码, execVerif_distant();每个项目仅执行一半时间。例如,如果我需要删除整个数组,则只删除一半。

            // start the loop, search in local datas
angular.forEach($scope.seaDocument.datas.cages, function(itemLocalCages) {
execVerif_local(itemLocalCages.url);
});

function execVerif_local(identifiant) {
var iterSearch_local = 0;
angular.forEach(responseZS, function(itemDistantCages) {
if (itemDistantCages.url == identifiant) {
iterSearch_local++;
}
});
// if we not find the local datas in distant datas
if (iterSearch_local == 0) {
// verifItem(); call
verifItem('remove', identifiant);
}
}




// verifItem();
function verifItem(action, url) {
if (action == 'remove') {
var iIndex = -1;
angular.forEach($scope.seaDocument.datas.cages, function(itemLocalCages) {
iIndex++;
if (itemLocalCages.url == url) {
$scope.seaDocument.datas.cages.splice(iIndex,1);
}
});
} else {
// do nothing
}
}

出了什么问题?

最佳答案

问题是 foreach 正在迭代您要从中删除内容的同一个对象。为了避免这种行为,请在循环之前克隆您正在迭代的对象,并将它们单独使用:

// ... code
var arrCopy = $scope.seaDocument.datas.cages.slice(); //this will create a deep copy.

angular.forEach(arrCopy, function(itemLocalCages) {
iIndex++;
if (itemLocalCages.url == url) {
$scope.seaDocument.datas.cages.splice(iIndex,1);
}
});
//... more code

关于javascript - 在 angularjs 数组中使用切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29396298/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com