在对象内移动(不复制)属性 - 使用引用

时间:2016-08-10 19:54:48

标签: javascript reference javascript-objects

如何数组元素移动到树中的其他位置?

假设:

obj = [
  {
    x : [{/*obj*/},{/*obj*/}]
    },
  {
    x : [{/*obj*/},{/*obj*/}]
    },
  {
    x : [
         {/*obj*/}, 
         {/*obj*/},
         {
            x:[]
          }
      ]
    }
]

假设我只能使用ab

var a = obj[1];
var b = obj[2].x[2].x;

如何使用obj[1]obj[2].x[3].x移至obj[2].x[3].push()

修改

我犯了一个错误 - 发布一个级别的数组/对象,这很容易。但是如何用更深层的物体来做呢? 数据样本已更改。

注意:我问的是 - 如何从随机位置移动数组元素,同时保持其余部分完整(如从dom中删除对象)

感谢

2 个答案:

答案 0 :(得分:1)

也许我误会了,但似乎你发布了你想要做的事情?有什么问题?

修改:使用新的obj并使用a和b变量更新了答案。



angular.module('myModule', ['ui.bootstrap'])
.directive('myDirective', ['$timeout', function ($timeout) {

    var controllerFn = ['$scope', '$uibModal', function ($scope, $uibModal) {

            $scope.names = ['Mario','Wario','Luigi'];

            $scope.openModal = function () {
                var modalInstance = $uibModal.open({
                    animation: true,
                    template: '<my-modal>',
                    size: 'lg',
                    resolve: {
                        items: function () {
                            return $scope.names;
                        }
                    }
                });
            };
        }];

    return {
        restrict: 'E',
        templateUrl: '/Folder/my-directive.html',
        controller: controllerFn,
        scope: {
        }
    };
}])
.directive('myModal', ['$timeout', function ($timeout) {

    var controllerFn = ['$scope', function ($scope) {
    }];

    return {
        restrict: 'E',
        templateUrl: '/Folder/my-modal.html',
        controller: controllerFn,
        scope: {
        }
    };
}]);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以使用splice方法从数组中删除项目,然后按照建议推送。请注意,splice将返回已删除对象或已删除对象的数组:

var obj = [ ... ];

var elem = obj.splice(1, 1);
obj[1].x[2].x.push(elem);