在ES6中,可以使用數組的擴展運算符 ...
來實現數組的深拷貝。具體步驟如下:
...
將原始數組中的元素一一復制到新數組中。以下是一個使用遞歸函數實現數組深拷貝的示例代碼:
function deepCopyArray(arr) {
// 創建一個新的數組變量
let newArr = [];
// 遍歷原始數組中的每個元素
for (let elem of arr) {
// 如果元素是對象或數組,則遞歸調用深拷貝函數進行拷貝
if (typeof elem === 'object' && elem !== null) {
newArr.push(deepCopyArray(elem));
} else {
newArr.push(elem);
}
}
return newArr;
}
// 測試
let arr1 = [1, 2, [3, 4]];
let arr2 = deepCopyArray(arr1);
console.log(arr2); // 輸出 [1, 2, [3, 4]]
console.log(arr1 === arr2); // 輸出 false
console.log(arr1[2] === arr2[2]); // 輸出 false
在上述代碼中,使用遞歸函數 deepCopyArray
來實現數組的深拷貝。該函數首先創建一個新的數組 newArr
,然后遍歷原始數組 arr
中的每個元素。對于每個元素,如果是對象或數組,則遞歸調用 deepCopyArray
函數進行深拷貝,并將結果添加到 newArr
中;如果是基本類型,則直接將其添加到 newArr
中。
需要注意的是,上述代碼只能實現對數組的深拷貝,而不能對數組中的其他類型(如函數、正則表達式等)進行深拷貝。如果需要深拷貝其他類型的元素,可以在遞歸函數中加入相應的判斷和處理邏輯。