解決js中數組直接賦值出現的問題


我在程序開發中定義了刪除數組元素的代碼:

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)

即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM