解决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