簡體   English   中英

Lodash過濾器由object的object

[英]Lodash filter by object of object

如何按類型過濾項目?

const items = {
        'someHash0': {
          type: 'foo',
          name: 'a'
        },
        'someHash1': {
          type: 'foo',
          name: 'b'
        },
        'someHash2': {
          type: 'foo',
          name: 'c'
        },
        'someHash3': {
          type: 'baz',
          name: 'd'
        },
      };

我想按 type=foo 過濾並得到結果:

const items = {
        'someHash0': {
          type: 'foo',
          name: 'a'
        },
        'someHash1': {
          type: 'foo',
          name: 'b'
        },
        'someHash2': {
          type: 'foo',
          name: 'c'
        }
      };

我試過了

 return _.mapValues(pairs, function (item) {
     return (item.type === 'foo') ?? item
})

但它返回真/假而不是整個 object

map通常用於編輯迭代輸入,因此這不是您所需要的。

你可以這樣做:

let result = _.filter(items, x => x.type === 'foo')

如果您需要保留相同的密鑰,您可以這樣做:

let result = _.pickBy(items, x => x.type === 'foo')

如果您不需要重新添加編號,過濾器就足夠了。 在這種情況下,您仍然可以通過結合reducefilter輕松逃脫,如下所示:

 const items = { '0': { type: 'foo', name: 'a' }, '1': { type: 'foo', name: 'b' }, '2': { type: 'foo', name: 'c' }, '3': { type: 'baz', name: 'd' }, }; const mapped = _.reduce(_.filter(items, (item) => item.type === 'foo'), (acc, item, index) => { acc[index] = item return acc }, {}) console.log(mapped)
 <script src="https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js"></script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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