配列参照型であり、私が観測に加入し、その後、二つの配列に結果を割り当てます。 Angular4は、私はいくつかのJSONを返すHTTPサービスを持っている
selectedData: any[];
selectedList: any[];
private get() {
this.dataService
.Get()
.subscribe(data => {
this.selectedData = data;
this.selectedList = data;
}, (error) => {
console.log(error);
});
}
今私はドロップダウンに変化するたびに、私が持っています
onChange(selectedValue) {
console.log(this.selectedData);
console.log(this.selectedList);
this.selectedData["exercisesProgress"] = this.selectedData["exercisesProgress"].filter(x=>x.id == selectedValue);
}
aka selectedDataとselectedListは、コンソールにチェックインすると両方がフィルタリングされます。これは同じ参照ですか? selectedListの新しいインスタンスを作成し、selectedListにデータをプッシュする必要がありますか?
これは同じ参考文献です。 'Array.prototype.slice()'を使って、配列の浅いコピーを得ることができます。 –
あなたは私の答えを確認できますか、パフォーマンスの観点から実行可能な方法ですか? –
それはあなたが本当に望むものによって決まります。 1. 'Object.assign()'は浅いコピーを作成し、配列の代わりに_object_を与えます。 'this.selectedData.slice(0)'はあなたに配列の浅いコピーを与えます。 2.あなたが望むものがあれば、他のライブラリ/手段を使って深いコピーを取らなければならないでしょう –