js操作改變原數組的解決方法

最近在開發的時候發現js中的for循環或者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()方法 可以深複製,擺脫與之前數組的關聯性

記下,以便不時之需
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章