Array.prototype.copy
并不是 JavaScript 中的一个内置方法。如果你想复制一个数组,你可以使用以下几种方法:
slice()
方法slice()
方法返回一个新的数组对象,这个新数组包含了原数组的指定部分的深拷贝,原数组不会被改变。
let originalArray = [1, 2, 3, 4, 5];
let copiedArray = originalArray.slice();
concat()
方法concat()
方法同样可以用来复制数组,它会创建一个新的数组,包含了原数组的所有元素。
let originalArray = [1, 2, 3, 4, 5];
let copiedArray = [].concat(originalArray);
扩展运算符 ...
可以将一个数组的所有元素展开到新的数组字面量中,从而实现复制。
let originalArray = [1, 2, 3, 4, 5];
let copiedArray = [...originalArray];
Array.from()
方法Array.from()
方法可以从类数组对象或可迭代对象创建一个新的数组实例。
let originalArray = [1, 2, 3, 4, 5];
let copiedArray = Array.from(originalArray);
map()
方法map()
方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后的返回值。
let originalArray = [1, 2, 3, 4, 5];
let copiedArray = originalArray.map(x => x);
JSON.parse(JSON.stringify(array))
,但这种方法有局限性,例如不能处理循环引用和函数。let originalArray = [1, {a: 2}, [3, 4]];
let deepCopiedArray = JSON.parse(JSON.stringify(originalArray));
// 修改深拷贝数组中的对象
deepCopiedArray[1].a = 3;
console.log(originalArray); // [1, {a: 2}, [3, 4]]
console.log(deepCopiedArray); // [1, {a: 3}, [3, 4]]
选择哪种方法取决于你的具体需求和场景。
领取专属 10元无门槛券
手把手带您无忧上云