我在程序開發中定義了刪除數組元素的代碼:
Array.prototype.remove = function(val){ var index = this.indexOf(val) if(index > -1){ //膠接,直接改變原數組 this.splice(index,1) } }
其中用到了splice函數,這個函數會直接改變原數組。
我想要保存一份原來的數組,即studentData.excellentStudents,因此將它賦值給一個新的數組excellentStudents,然后進行數組操作。
let excellentStudents = studentData.excellentStudents
但是發現,使用remove函數操作數組excellentStudents后,studentData.excellentStudents數組也受到了影響。
原來是數組直接賦值,傳遞的只是引用。
解決方法則是復制一份新的數組嘍。
我們可以使用如下代碼,用數組的concat函數,合並空數組和現有數組成為新的數組。
let excellentStudents = [].concat(studentData.excellentStudents)
即可。