JavaScript 浅克隆数组

示例

有时,您需要使用数组,同时确保不修改原始数组。代替clone方法,数组具有slice使您可以对数组的任何部分执行浅表复制的方法。请记住,这只会克隆第一级。这对于基本类型(例如数字和字符串)有效,但不适用于对象。

要浅克隆一个数组(即具有一个新的数组实例,但具有相同的元素),可以使用以下单线:

var clone = arrayToClone.slice();

这将调用内置的JavaScriptArray.prototype.slice方法。如果将参数传递给slice,则会得到更复杂的行为,这些行为会创建仅数组一部分的slice()浅表副本,但出于我们的目的,仅调用将创建整个数组的浅表副本。

用于将类似数组的对象转换为数组的所有方法都适用于克隆数组:

6
arrayToClone = [1, 2, 3, 4, 5];
clone1 = Array.from(arrayToClone);
clone2 = Array.of(...arrayToClone);
clone3 = [...arrayToClone] // 最短的方法
5.1
arrayToClone = [1, 2, 3, 4, 5];
clone1 = Array.prototype.slice.call(arrayToClone);
clone2 = [].slice.call(arrayToClone);