我正在通過陣列中的 id 進行搜索。但如果陣列為空,我希望所有資料都來。我該怎么做?
selectedUrunGrubus: number[] = [];
urun: Urun[];
getUruns() {
this.generic?.Get_All("Uruns/Generic_Method").pipe(map(hizmets => hizmets.filter(hizmets => (this.selectedUrunGrubus.includes(hizmets.urunGrubuID) && this.selectedUrunGrubus.length>0)))).subscribe({
next: (data) => { this.urun = data; console.log(this.urun) },
error: (err) => { console.log(err) },
complete: () => {
}
});
}
this.urun = [id=1] [id=2] [id=3] [id=4];
if(selectedUrunGrubus == [1,2])
{
this.urun = [id=1] [id=2]
}
if(selectedUrunGrubus == empty)
{
this.urun = [id=1] [id=2] [id=3] [id=4]
}
uj5u.com熱心網友回復:
您的陣列為空的原因是由于this.selectedUrunGrubus.length>0過濾器內部的條件。的長度selectedUrunGrubus從 0 開始,因此運算式將始終為false。
這是您可以使用的另一種策略。將過濾后的陣列分配給一個變數,然后為任何一種情況回傳一個三元運算式。
selectedUrunGrubus: number[] = [];
urun: Urun[];
getUruns() {
this.generic?.Get_All("Uruns/Generic_Method")
.pipe(
map(hizmets =>{
const matches = hizmets.filter(hizmet => this.selectedUrunGrubus.includes(hizmet.urunGrubuID));
return !!matches.length ? matches : hizmets;
}),
tap(urun=> this.urun = urun)
).subscribe();
}
筆記:
- 我使用雙劉海
!!將長度轉換為布林值(因為0是假的) - 用于
tap()處理屬性分配等副作用。 - 里面的其余邏輯
subscribe()是默認行為,所以你可以subscribe()在最后使用一個基本的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/416716.html
標籤:
上一篇:具有高帶寬和100k下載器的外部主機小檔案(20MB大小)-替代品
下一篇:按類別分組物件陣列
