3 回答

TA貢獻(xiàn)1831條經(jīng)驗 獲得超10個贊
對象是通過引用分配的,因此您需要對對象進(jìn)行深層復(fù)制,否則對一個對象所做的更改將不可避免地改變另一個對象。在您的示例中,您可以通過簡單地定義一個新變量來保存您想要的數(shù)據(jù)來避免這種情況。
換句話說,而不是這些行:
var a = {x:1}
let b = {x:2}
let c = {x:3}
let d = {x:4}
let tab1 = []
a.y = 5
b.y = 10
c.y = 10
d.y = 10
let group1 = [a, c, d]
let group2 = [a, b, d]
你可以使用這些行:
let a = {x:1}
let b = {x:2}
let c = {x:3}
let d = {x:4}
let e = {x:5}
let f = {x:6}
let tab1 = []
a.y = 5
b.y = 10
c.y = 10
d.y = 5
e.y = 10
f.y = 10
let group1 = [a, b, c]
let group2 = [d, e, f]
然后你會看到行為如你所愿。我不確定你的代碼的目的是什么,但我想你會知道從這里去哪里。

TA貢獻(xiàn)1780條經(jīng)驗 獲得超1個贊
group1andgroup2是引用相同對象的數(shù)組,使用JSON.parse()and進(jìn)行復(fù)制JSON.stringify():
let group1 = JSON.parse(JSON.stringify([a, c, d]));
let group2 = JSON.parse(JSON.stringify([a, b, d]));

TA貢獻(xiàn)1943條經(jīng)驗 獲得超7個贊
我試圖制作引用對象的深層副本,它可以工作
let group1 = [Object.assign({}, a), c, d]
let group2 = [Object.assign({}, a), b, d]
添加回答
舉報