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
});
});
this.packs
の各パックにsegments
の配列を追加しようとしている方法を作成しました。 Array.from()
を使用して新しい配列を作成していますが、何らかの理由でpack.segments[0].devices[0]
をTRUEに設定すると、this.segments[0].devices[0]
もtrueに変更されます。次のコードの出力はどうして可能ですか?
どのように解決するか?
、アレイ内の任意の循環参照を持っている場合は、上記の動作しないではないだろう、新しい配列には元のオブジェクトへの参照が残っています。 – Amy
これらのセグメントをクローンする必要があります。現時点では、同じセグメントへの参照をコピーするだけです。 –
サービスなしでこれを再現できると思います。これは純粋にJavaScriptの質問のようです突然変異?また、コードが実際に実行可能で、外部依存関係が0か不明な変数を使用すると、あなたの質問は大幅に改善されます... –