淺克隆一個陣列

有時,你需要使用陣列,同時確保不修改原始資料。陣列有一個 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);