最近在開發的時候發現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()方法 可以深復制,擺脫與之前數組的關聯性
記下,以便不時之需