js记录双层for循环中引用传递造成的死循环(值传递解决)

 请看以下代码。

        addToSelectedRow(data){
            for(let i=0;i

乍一看是不是觉得没什么问题????不知道是中饭没吃饱还是中午没休息,抑或是js写少了,这里的死循环我始终没看出来我去~~~~吐血~~~出现的症状就是一执行这个方法, 浏览器就卡死了,一度怀疑新买的小米pro本本是不是真的不行。。

 

知道了问题,就是this.selectedRowKeys.push这里,不停的往selectedRowKeys里面添加元素,哪里循环的完呢?

然后就把data跟selectedRowKeys赋值给新声明的两个对象后,遍历的是新的对象,push的是老的对象,问题成功解决,

这是改为值传递之后的写法

            let selectArray = JSON.parse(JSON.stringify(this.selectedRowKeys))
            let dataArray = JSON.parse(JSON.stringify(data))
            for(let i=0;i

 

 

 

 

注意:这里遍历以后,新的数据是会有重复的,需要给数组去重,写法如下:

//定义一个新数组来接收元素 删除数组中重复的元素
            let newArr = [];
            for(let t = 0;t

 

 

 

 

 

 

总结到这里,感觉其实我上面可以不用双层for循环,直接两个数组的id合并到一起就行了,反正后面也要去重的,多此一举。。。

你可能感兴趣的:(js)