浅克隆一个数组

有时,你需要使用数组,同时确保不修改原始数据。数组有一个 slice 方法,而不是 clone 方法,它允许你执行数组任何部分的浅表副本。请记住,这只会克隆第一级。这适用于原始类型,如数字和字符串,但不适用于对象。

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

var clone = arrayToClone.slice();

这称为内置的 JavaScript Array.prototype.slice 方法。如果你将参数传递给 slice,你可以获得更复杂的行为来创建只有部分数组的浅克隆,但出于我们的目的,只需调用 slice() 将创建整个数组的浅表副本。

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

Version >= 6

arrayToClone = [1, 2, 3, 4, 5];
clone1 = Array.from(arrayToClone);
clone2 = Array.of(...arrayToClone);
clone3 = [...arrayToClone] // the shortest way

Version <= 5.1

arrayToClone = [1, 2, 3, 4, 5];
clone1 = Array.prototype.slice.call(arrayToClone);
clone2 = [].slice.call(arrayToClone);