如何克隆数组中的对象项?

时间:2015-11-30 11:15:35

标签: javascript jquery arrays object reference

我有一个如下所示的数组 -

var x = [{
    name: "Mr.X", 
    age: 22
},{
    name: "Mr.Y", 
    age: 26
},{
    name: "Mr.Z", 
    age: 24
},];

我想复制第二项并将其作为第一个元素。为了避免任何混淆,我希望得到的数组如下所示 -

var x = [{
    name: "Mr.YD", 
    age: 19
},{
    name: "Mr.X", 
    age: 22
},{
    name: "Mr.Y", 
    age: 26
},{
    name: "Mr.Z", 
    age: 24
},];

我尝试过的内容 - 我提取了第二项,并更改了nameage属性。但它也在改变第二项。我知道这是因为我们正在改变参考。但我不知道如何提取/复制项目并仅更改其值。

2 个答案:

答案 0 :(得分:1)

var x = [{
    name: "Mr.X", 
    age: 22
},{
    name: "Mr.Y", 
    age: 26
},{
    name: "Mr.Z", 
    age: 24
},];
console.log(x);
var y = JSON.parse(JSON.stringify(x));
y.unshift({
    name: "Mr.XD", 
    age: 19
});
console.log(y);
  1. Unshift追加在数组
  2. 之上
  3. 推送附加在数组的末尾

答案 1 :(得分:1)

如果您正在寻找对象的克隆 有多种方式

jQuery Extend:

// Shallow copy
  var newObject = jQuery.extend({}, oldObject);

  // Deep copy
  var newObject = jQuery.extend(true, {}, oldObject);

JSON Stringify

var newObject =  JSON.parse(JSON.stringify(oldObject))

或者: 通过递归迭代对象道具来编写克隆方法

然后使用标准数组API附加到数组