this.someService.findDevices()
.subscribe((segments) => {
this.segments = Array.from(segments.segments);
this.packs.forEach((pack) => {
pack.segments = Array.from(segments.segments);
pack.segments[0].devices[0].selected = true; //if commented, output is FALSE
console.log(this.segments[0].devices[0]); // shows TRUE
});
});
我创建了一种方法,我尝试将segments
数组添加到this.packs
中的每个包中。
我正在使用Array.from()
创建一个新数组,但出于某种原因,当我将pack.segments[0].devices[0]
设置为TRUE时,this.segments[0].devices[0]
也会更改为true。
知道怎么解决吗?
答案 0 :(得分:0)
在名为isSelected
的函数内创建一个顶级布尔变量并进行相应设置。然后做你的循环。如果任何一个项目更改了切换,则将设置isSelected
并返回正确的布尔值。
答案 1 :(得分:0)
您正在制作segments
数组的浅层副本,不会克隆其中的devices
数组。
要进行深度克隆并使代码按预期工作,请尝试以下操作。
pack.segments = JSON.parse(JSON.stringify(segments.segments))

注意: 如果您在数组中有任何循环引用,上述内容将无效