gpt4 book ai didi

Javascript:将对象从一个数组移动到另一个数组:最佳方法?

转载 作者:可可西里 更新时间:2023-11-01 01:40:31 24 4
gpt4 key购买 nike

我有两个数组,分别称为“objects”和“appliedObjects”。我试图在 Javascript 和/或 Angular 中想出一种优雅的方式来将对象从一个数组移动到另一个数组。

最初我做了这样的事情:

   $scope.remove = function () {
angular.forEach($scope.appliedObjects, function (element, index) {
if (element.selected) {
element.selected = false;
$scope.objects.push(element);
$scope.appliedObjects.splice(index, 1);
}
});
}

$scope.add= function () {
angular.forEach($scope.objects, function (element, index) {
if (element.selected) {
element.selected = false;
$scope.appliedObjects.push(element);
$scope.objects.splice(index, 1);
}
});
}

但后来我意识到,当值从循环数组中删除时,它不会添加或删除所有其他项目,因为它是按索引进行的。

然后我尝试使用一个临时数组来保存要添加或删除的项目列表,然后我开始遇到奇怪的引用问题。

我开始思考这个问题的最佳解决方案是什么......非常感谢任何帮助和/或指导。

最佳答案

function moveElements(source, target, moveCheck) {
for (var i = 0; i < source.length; i++) {
var element = source[i];
if (moveCheck(element)) {
source.splice(i, 1);
target.push(element);
i--;
}
}
}

function selectionMoveCheck(element) {
if (element.selected) {
element.selected = false;
return true;
}
}

$scope.remove = function () {
moveElements($scope.appliedObjects, $scope.objects, selectionMoveCheck);
}

$scope.add = function () {
moveElements($scope.objects, $scope.appliedObjects, selectionMoveCheck);
}

关于Javascript:将对象从一个数组移动到另一个数组:最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31887967/

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