Ramda JS:如何执行一个地图,我在每个对象上为R.replace调用给定属性?

Rya*_*vis 3 javascript functional-programming ramda.js

鉴于以下数据:

const my_data = [
  {
    name: "John",
    age: 22
  },
  {
    name: "Johnny",
    age: 15
  },
  {
    name: "Dave",
    age: 27
  }
]
Run Code Online (Sandbox Code Playgroud)

我想转换数据,以便在每个名称属性中将子字符串"John"替换为"Ben",所以它看起来像这样:

[
  {
    name: "Ben",
    age: 22
  },
  {
    name: "Benny",
    age: 15
  },
  {
    name: "Dave",
    age: 27
  }
]
Run Code Online (Sandbox Code Playgroud)

我想以正确的功能方式这样做(我认为没有点,但我还在学习),所以我可以在管道中重复使用它,比如首先按年龄减少然后进行替换,或者首先进行替换做一个.我如何使用Ramda函数执行此操作?

var fix_names = ???
var fixed_data = R.map( fix_names, my_data );
Run Code Online (Sandbox Code Playgroud)

dav*_*ers 5

R.map(R.over(R.lensProp('name'), R.replace('John', 'Ben')))(my_data)
Run Code Online (Sandbox Code Playgroud)

R.overR.lensProp.