在JavaScript中,可以使用以下方法之一来克隆一个对象数组:
JSON.stringify()
和 JSON.parse()
方法:const originalArray = [
{ id: 1, name: "Alice" },
{ id: 2, name: "Bob" },
{ id: 3, name: "Charlie" },
];
const clonedArray = JSON.parse(JSON.stringify(originalArray));
Array.prototype.map()
方法:const originalArray = [
{ id: 1, name: "Alice" },
{ id: 2, name: "Bob" },
{ id: 3, name: "Charlie" },
];
const clonedArray = originalArray.map((obj) => ({ ...obj }));
Array.prototype.slice()
方法:const originalArray = [
{ id: 1, name: "Alice" },
{ id: 2, name: "Bob" },
{ id: 3, name: "Charlie" },
];
const clonedArray = originalArray.slice();
Array.from()
方法:const originalArray = [
{ id: 1, name: "Alice" },
{ id: 2, name: "Bob" },
{ id: 3, name: "Charlie" },
];
const clonedArray = Array.from(originalArray, (obj) => ({ ...obj }));
以上方法都可以实现对象数组的克隆,但需要注意的是,这些方法只能执行浅拷贝,即对象的属性值为基本类型时,克隆后的对象数组中的对象属性值与原始数组中的对象属性值是相同的,但如果属性值为引用类型(如数组、对象),则克隆后的对象数组中的对象属性值与原始数组中的对象属性值是指向同一个内存地址的,即修改克隆后的对象数组中的对象属性值,原始数组中的对象属性值也会受到影响。如果需要进行深拷贝,可以使用第三方库,如 lodash
的 _.cloneDeep()
方法。
领取专属 10元无门槛券
手把手带您无忧上云