Javascript 如何克隆阵列中的对象项?

Javascript 如何克隆阵列中的对象项?,javascript,jquery,arrays,object,reference,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 },{

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

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
},];
我想复制第二个项目,并把它作为第一个元素。为了避免混淆,我希望得到的数组如下所示-

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
},];
我所尝试和得到的-我提取了第二项,并更改了
名称
年龄
属性。但它也改变了第二项。我知道这是因为我们正在更改引用。但我不知道如何提取/复制项目并仅更改其值

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);
  • 取消移动附加在数组顶部
  • 将附加项推到数组的末尾

  • 如果要查找对象的克隆 有多种方法

    jQuery扩展:

    // Shallow copy
      var newObject = jQuery.extend({}, oldObject);
    
      // Deep copy
      var newObject = jQuery.extend(true, {}, oldObject);
    
    JSON字符串化

    var newObject =  JSON.parse(JSON.stringify(oldObject))
    
    或: 通过递归遍历对象道具来编写克隆方法


    然后使用标准阵列API附加到阵列

    是否有特定原因需要克隆阵列中的现有对象,而不仅仅是创建新对象?请参阅:我没有回答您的问题。但是结果数组可以是“y”而不是“x”。@RayonDabre-只有一件事-结果也应该是一个对象数组,就像输入一样。
    JSON.stringify
    仅用于演示结果。。您可以删除它!虽然它通常是有效的,但我决不建议只使用JSON来克隆对象。