[removed] move objects from one array to another: Best approach?

后端 未结 7 688
臣服心动
臣服心动 2021-01-04 01:38

I have two arrays, called \'objects\' and \'appliedObjects\'. I\'m trying to come up with an elegant way in Javascript and/or Angular to move objects from one array to anot

7条回答
  •  天命终不由人
    2021-01-04 02:19

    This is a first pass at what I think will work for you. I'm in the process of making a test page so that I can test the accuracy of the work and will update the tweaked result, which hopefully there will not be.

    EDIT: I ran it and it seems to do what you are wanting if I understand the problem correctly. There were a couple of syntax errors that I edited out.

    Here's the plunk with the condensed, cleaned code http://plnkr.co/edit/K7XuMu?p=preview

    HTML

    
    
    

    JS

    $scope.transferArrays = function (arrayFrom, arrayTo) {
    var selectedElements;
    selectedElements = [];
    angular.forEach(arrayFrom, function(element) {
      if (element.isSelected) {
        element.isSelected = false;
        selectedElements.push(element);
      }
    });
    angular.forEach(selectedElements, function(element) {
      arrayTo.push(arrayFrom.splice(
        arrayFrom.map(function(x) {
          return x.uniqueId;
        })
        .indexOf(element.uniqueId), 1));
    });
    };
    

    Old code

    $scope.remove = function () {
            var selectedElements;
            selectedElements = [];
            angular.forEach($scope.appliedObjects, function (element) {
                if (element.isSelected) {
                    element.isSelected = false;
                    selectedElements.push(element);
                }
            });
            angular.forEach(selectedElements, function (element) {
                $scope.objects.push($scope.appliedObjects.splice(
                    $scope.appliedObjects.map(function  (x) { return x.uniqueId; })
                    .indexOf(element.uniqueId), 1));
            });
        };
    
    $scope.add = function () {
            var selectedElements;
            selectedElements = [];
            angular.forEach($scope.objects, function (element) {
                if (element.isSelected) {
                    element.isSelected = false;
                    selectedElements.push(element);
                }
            });
            angular.forEach(selectedElements, function (element) {
                $scope.appliedObjects.push($scope.objects.splice(
                    $scope.objects.map(function  (x) { return x.uniqueId; })
                    .indexOf(element.uniqueId), 1));
            });
        };
    

提交回复
热议问题