2017-08-08 72 views
3

我正試圖找到一種方法來處理在Angular 2應用程序中使用數組來過濾數組。數據是這樣的:在Angular 2應用程序中過濾多維數組中的應用程序

let services = [ 
      { 
       flags: [ 
        { 
         action: "Flag One", 
         completed: true, 

        }, 
        { 
         action: "Flag Two", 
         completed: false, 

        }, 
       ], 
      ribbons: [ 
       { 
         action: 'Ribbon One', 
         active: false, 
        }, 
       { 
         action: 'Ribbon Two', 
         active: true, 
        }, 
      ] 
      } 
     ] 

現在,如果我知道爲目標的第二陣列中的哪些項目,我可以這樣做:

let filteredServices = services.filter(service => service.flags[0].completed === false); 

console.dir(filteredServices); 

然而,一般來說,我不知道是哪個項目中內部數組的目標,所以如何編寫一個過濾器函數來遍歷這兩個數組,並篩選我正在尋找的特定項目?我會使用「過濾器」和「forEach」的組合嗎?還是有更簡潔的方法來做到這一點?

回答

1

您可以使用過濾器與一些

let filteredServices = services.filter((element) => element.flags.some((subElement) => subElement.completed === false)); 
+0

@Muirik是完全相同 – Sajeetharan

+0

只是好奇,爲什麼我得到打印到控制檯在這種情況下,整個對象? (1)0:Objectflags:Array(2)ribbons:Array(2)__ proto__:Objectlength:1__proto__:Array(0) – Muirik

+0

在嘗試建議後,我在原始問題中添加了一些細節。請看看我在那裏寫的。 – Muirik