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来克隆对象。