为什么改了JS数组中的一个元素的值,其他数组元素值都跟着变了

部分内容摘抄自:https://www.cnblogs.com/KevinTong/p/11414770.html

原因:

  数组是引用类型,数组变量存储在栈,元素数据存储在堆中,将数组赋值不同的对象,所以的赋值对象都指向堆同一个数据,所以改变其中一个数组中的元素,别的数组元素也会改变。

解决方案:

  原理就是先把数组转换成字符串再转换成对象 ,这样会新分配一块内存,就不会指向同一个堆中的数据。

例子: var tmp = JSON.parse(JSON.stringify(array));

       var checkRows = table.checkStatus(CustomerList.tableId);
            var checkRowsYear= [];
            for (var i = 0; i < checkRows.data.length; i++) {
                var yearList = checkRows.data[i].year.split(',');
                var paramValue = checkRows.data[i];
                for (var j = 0;j < yearList.length;j++){
                    var tmp = JSON.parse(JSON.stringify(paramValue));
                    tmp['year'] = yearList[j];
                    checkRowsYear.push(tmp);
                }
            }

 

posted @ 2021-11-03 13:06  关陈七  阅读(828)  评论(0)    收藏  举报