[英]Is it possible to filter array values by multiple values by using underscore?
我有以下數組值:
[
{
id: 1,
field: 'map'
},
{
id: 2,
field: 'dog'
},
{
id: 3,
field: 'map'
}
]
我需要找出字段等於dog
和map
元素。 我知道我可以使用_.filter
方法並傳遞迭代器函數,但我想知道的是, 是否有更好的解決方案來解決這個問題,我可以傳遞搜索字段和可能的值 。 有人可以提供更好的方法嗎?
編輯 ::
我可以使用以下方法:
_.where(array, {field: 'dog'})
但在這里我只能檢查一個條款
_.filter(data, function(item){ return item.field === 'map' || item.field === 'dog'; })
如果要創建接受field
和values
的函數,它可以如下所示:
function filter(data, field, values) {
_.filter(data, function(item){ return _.contains(values, item[field]); })
}
只需將過濾條件作為_.filter(list, predicate, [context])
的第三個參數_.filter(list, predicate, [context])
然后將其設置為迭代器的context
( this
):
var data = [ { id: 1, field: 'map' }, { id: 2, field: 'dog' }, { id: 3, field: 'blubb' } ]; var filtered = _.filter( data, function(i) { return this.values.indexOf(i.field) > -1; }, { "values": ["map", "dog"] } /* "context" with values to look for */ ); console.log(filtered);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.