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