鍍金池/ 問答/HTML/ 大佬們都是怎么進(jìn)行數(shù)組對(duì)象的復(fù)制的

大佬們都是怎么進(jìn)行數(shù)組對(duì)象的復(fù)制的

大佬們都是怎么對(duì)數(shù)組進(jìn)行深復(fù)制的

今天在開發(fā)中遇到了復(fù)制數(shù)組對(duì)象,用了es6的方法進(jìn)行數(shù)組復(fù)制

let a = [{a: 1,b: 2}]
let b = [...a]
b[0].a = 4
console.log(a)

然而這是個(gè)淺復(fù)制,最后我這么寫

let a = [{a: 1,b: 2}]
let b = a.map(val => ({...val}))
b[0].a = 4
console.log(a)

這樣進(jìn)行復(fù)制,但這樣只能解決當(dāng)前的數(shù)組對(duì)象,如果數(shù)組更復(fù)雜的,是不是只能通過遞歸來實(shí)現(xiàn)復(fù)制呢?

回答
編輯回答
孤巷

“序列化”后“反序列化”,能完美解決你遇到的問題

var a = [{a: 1,b: 2}]
var b = JSON.parse(JSON.stringify(a));
b[0].a = 4
console.log(a)
2017年7月29日 22:40
編輯回答
冷眸
2017年5月2日 02:34
編輯回答
陪她鬧

在不存在function的情況下,對(duì)數(shù)據(jù)、對(duì)象進(jìn)行序列化與反序列化 可進(jìn)行深拷貝
let b = JSON.parse(JSON.stringify(a));

2018年8月6日 03:39
編輯回答
掛念你

已知數(shù)組值是基本類型直接用[...a],如果數(shù)組值是引用類型就直接用cloneDeep了,實(shí)現(xiàn)方式好幾種就不貼了

2017年7月13日 16:19
編輯回答
爛人
var arr = [xx]
var cloneArr = JSON.parse(JSON.stringify(arr))
2018年5月4日 01:19