簡體   English   中英

是否可以使用下划線通過多個值過濾數組值?

[英]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'
   }
]

我需要找出字段等於dogmap元素。 我知道我可以使用_.filter方法並傳遞迭代器函數,但我想知道的是, 是否有更好的解決方案來解決這個問題,我可以傳遞搜索字段和可能的值 有人可以提供更好的方法嗎?

編輯 ::

我可以使用以下方法:

_.where(array, {field: 'dog'})

但在這里我只能檢查一個條款

_.filter(data, function(item){ return item.field === 'map' || item.field === 'dog'; })

如果要創建接受fieldvalues的函數,它可以如下所示:

function filter(data, field, values) {
    _.filter(data, function(item){ return _.contains(values, item[field]); })
}

只需將過濾條件作為_.filter(list, predicate, [context])的第三個參數_.filter(list, predicate, [context])然后將其設置為迭代器的contextthis ):

 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM