解决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)
即可。