我有两个数组,分别称为“对象”和“ 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);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句