js操作改变原数组的解决方法


最近在开发的时候发现js中的循环操作会改变原数组,var一个变量承接也不行

甚至连map方法都会改变原数组,下面是解决方法

let a = ['a','b','c']
let b = [[2, 0, 0],[0, 0, 0],[2, 2, 0],[1, 0, 0],[0, 1, 2]]
//需求   将a b数组操作变成下面的样子
// [
//     [['a', 0, 0],['a', 0, 0],['a', 2, 0],['a', 0, 0],['a', 1, 2]],
//     [[2, 'b', 0],[0, 'b', 0],[2, 'b', 0],[1, 'b', 0],[0, 'b', 2]],
//     [[2, 0, 'c'],[0, 0, 'c'],[2, 2, 'c'],[1, 0, 'c'],[0, 1, 'c']]
// ]


let lastArr = a.map((item,index,arr)=>{
   return b.map((item1,index1,arr1)=>{
       var arr = item1.slice();
       arr[index] = item
       return arr
   })
})
console.log(lastArr);
console.log(b);

关键在于这个slice()方法 可以深复制,摆脱与之前数组的关联性

记下,以便不时之需


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM