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()方法 可以深复制,摆脱与之前数组的关联性

记下,以便不时之需
posted @ 2019-06-28 11:41  liyichao  阅读(3757)  评论(0编辑  收藏  举报