2017-08-21 33 views
0

這一個一直使我受益匪淺......對數組中的數組進行過濾,是否有這樣做的優雅方式?

var myProperty = "FOO" 

var expenseSelect = expenseArray.filter(function(obj){ 
    return obj.property == myProperty 
}); 

但現在我有一個情況的obj.property是屬性數組[「富」,「BAR」,「WEE」]裏面的expenseArray。

有沒有一個聰明的方法來做到這一點?或者我必須做循環內的整個循環?

+0

遞歸? https://stackoverflow.com/questions/45796948/search-a-deeply-nested-value-in-array-of-objects-in-javascript –

+0

沒有根據內容比較數組(或對象)的內在機制,所以不管怎樣,它都是由你來實現的。 – Pointy

+0

不確定,如果我理解正確,但不應該這樣工作:'expenseArray.filter((obj)=> obj.property.includes(myProperty))'? – Sirko

回答

2

如果你想檢查是否myProperty的是陣列中至少具有一個元素是否通過了測試使用some()方法測試使用

var myProperty = "FOO" 
 

 
var expenseSelect = expenseArray.filter(function(obj){ 
 
    return obj.property.includes(myProperty); 
 
});

+0

奇蹟,做了詭計!非常優雅和簡單,喜歡它! – torbenrudgaard

0

數組,你可以做到這一點的通過所提供的功能來實現,它可以是一個簡單的選項..

var myProperty = "FOO"; 
 
var expenseArray=[]; 
 
expenseArray[0]={ property: ["FOO", "BAR", "WEE"] }; 
 
expenseArray[1]={ property: ["NoFOO", "BAR", "WEE"]} ; 
 

 
var expenseSelect = expenseArray.filter(function(obj){ 
 
    return obj.property.some(function(element,index,array){ 
 
     return element == myProperty; 
 
    }); 
 
}); 
 

 
console.log(expenseSelect);

相關問題