浅克隆一个数组
有时,你需要使用数组,同时确保不修改原始数据。数组有一个 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);