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

Moving (not copying) property inside object - using reference

如何将数组元素移动到树中的另一个位置?

假设:

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

假设我只能使用 ab

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

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


编辑

我犯了一个错误-发一级array/object,这样很容易。但是如何处理更深的对象呢?
数据样本已更改。

注意:我要问的是 - 我怎样才能从 运行dom 位置移动一个数组元素,同时保持其余部分完好无损(比如从 dom 中删除一个对象)

谢谢

可能是我理解错了,但是你发布的好像正是你想做的?有什么问题?

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

var objArr = [{
  x: [{ /*obj*/ }, { /*obj*/ }]
}, {
  x: [{ /*obj*/ }, { /*obj*/ }]
}, {
  x: [{ /*obj*/ }, { /*obj*/ }, {
    x: []
  }]
}];

var a = objArr[1];
var b = objArr[2].x[2].x;
b.push(a);
console.log("Checking if same Object: " + (b[0] === a));
objArr.splice(1, 1);

console.log(objArr);

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

var obj = [ ... ];

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