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