使用ramda更改数组中的对象属性

ami*_*mir 9 javascript ramda.js

我有一个像下面的对象数组:

[{name:'name', key:'21',good: 'true'},
{name: 'another name', key:'22',good:'false'},
...]
Run Code Online (Sandbox Code Playgroud)

现在我想对这个数组中的一个对象进行更改.我的第一次尝试是这样的:

const s = R.compose(
  R.assoc('good', checked),
  R.propEq('key', name),
  R.map(),
);
Run Code Online (Sandbox Code Playgroud)

但这个代码resualt是我想要的对象,只有它的'good'属性.我希望通过这种改变得到整个阵列.

Sco*_*yet 16

我会做这样的事情:

const alter = curry((checked, key, items) => map(
  when(propEq('key', key), assoc('good', checked)),
  items
))

alter('true', '22', items)
Run Code Online (Sandbox Code Playgroud)

这有包括没有自由变量的优势(如checkedname原)的钻营可以,如果你永远不会需要这部分版本被丢弃.

您可以在Ramda REPL上看到这一点.

  • 一点也不; 我刚刚做了一段时间.(作为Ramda的作者之一,我对使用它有一点了解.) (3认同)