我有一个类似的列表:
var list = [
{
stack: [
{
file: 'abc'
}
]
},
{
stack: [
{
file: 'abc'
},
{
file: 'abc'
}
]
}
];
我想用例如'def'更改每个文件名。如何使用ramda
?
我尝试过这样的事情:
var trans = {
file: replace('abc', 'def')
};
var f = R.evolve(trans)
var f2 = R.map(f)
R.map(f2, list)
但它不起作用。我需要以某种方式在解决方案中包含stack
字段。
答案 0 :(得分:4)
嗯,它不漂亮,但我认为这样做会很好:
R.map(R.over(
R.lensProp('stack'),
R.map(R.over(R.lensProp('file'), R.replace('abc', 'def')))
))(list)
你可能也可以在里面使用evolve
,但是lens
es非常强大,而且通常更有用。