使用Ramda在嵌套对象中进行数组过滤

问题描述 投票:0回答:2

假设我们有以下对象:

const sample = {
  foo: {
    tags: [
      'aaa', 'bbb'
    ],
    a: 1,
    b: 10
  },
  bar: {
    tags: [
      'ccc', 'ddd'
    ],
    a: 11,
    b: 100
  }
}

如何使用ramda从对象sample中删除特定的标签值?我已经做到了

/// Remove tag named 'aaa'
R.map(v => R.assoc('tags', R.without('aaa', v.tags), v), sample)

这可以达到预期的结果,但如何消除map内的lamda(和创建的闭包?)>

假设我们有以下对象:const sample = {foo:{标签:['aaa','bbb'],a:1,b:10},bar:{标签:['ccc',' ddd'],a:11,...

javascript ramda.js
2个回答
0
投票

您可以使用evolve代替evolveassoc期望在提供的对象上设置属性和纯值,而assoc期望产生新值的属性和函数(尽管使用其他语法)。


0
投票

您可以evolves每个对象,并使用R.without来转换R.map(R.evolve({tags: R.without('aaa')}), sample) 的值:

© www.soinside.com 2019 - 2024. All rights reserved.