2015-10-05 160 views
3

考慮以下數組的數組:如何寫濾波器檢查陣列

array1 = ["A","B", "C"]; 
array2 = ["D", "E", "F"]; 
array3 = ["G", "H", "I"]; 

combined = [array1, array2, array3]; 
select = ["A","H"]; 

我需要一個濾波器關於「組合」基於返回ARRAY1和ARRAY3「選擇」陣列上作爲A是在數組1 ,H在array3中。

這就是我試圖(以打字稿)

return routes.filter((route: any) => 
      roles.some((role: string) => 
       route.config.roles.some((routeRole: string) => 
        routeRole === role))); 

看來工作,但它僅適用於在route.config.roles的第一個項目。

回答

2

使用filtersome

function finder(combined, select) { 
    return combined.filter(function (el) { 
    return el.some(function (letter) { 
     return select.indexOf(letter) > -1; 
    }); 
    }); 
} 

DEMO