我有返回一些JSON HTTP服務和予訂閱可觀察到的,那麼結果分配給兩個數組:Angular4是數組引用類型
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,而不是直接分配?
_Is此相同reference_ ..是的。你可以使用'Array.prototype.slice()'獲得數組的淺拷貝。 –
你可以檢查我的答案,從性能的角度來看是可行的辦法? –
這取決於你真正想要什麼。 1.'Object.assign()'將使淺表副本並給出一個_object_代替的陣列。 'this.selectedData.slice(0)'會給你數組的一個淺表副本。 2.如果你想要 –