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

即可。

posted @ 2021-08-18 09:53  罗毅豪  阅读(936)  评论(0编辑  收藏  举报