RAMDA:如何使用过滤器功能保持原始结构



我想执行过滤功能,如下所示:

配置:

const arr = {
  id: 888,
  name: 'Library',
  bookLists: [{
      "name": "Book 1",
      "booked": "Y"
    }, {
      "name": "Book 2",
      "booked": "N"
    }, {
      "name": "Book 3",
      "booked": "Y"
    }]
  };

然后,我尝试用flag'预订=== y'

过滤书籍列表
R.compose(R.filter(x => x.booked === 'Y'), R.prop('bookLists'))(arr)

我得到了结果,这是正确的

[{"booked": "Y", "name": "Book 1"}, {"booked": "Y", "name": "Book 3"}]

但是,这是我想要的一部分。我该如何实现这样的结果?

{
  id: 888,
  name: 'Library',
  bookLists: [{
      "name": "Book 1",
      "booked": "Y"
    }, {
      "name": "Book 3",
      "booked": "Y"
    }]
  }

您可以使用R.evolve

R.evolve({bookLists: R.filter(x => x.booked === 'Y')})(arr)

结果将是:

{
  id: 888,
  name: 'Library',
  bookLists: [{
      "name": "Book 1",
      "booked": "Y"
    }, {
      "name": "Book 3",
      "booked": "Y"
    }]
  }

请参阅此处的相关文档。

最新更新