Javascript 为arr.R.assoc中的对象添加id:s(';id';,i+;+;)而不是增加i
我试图用Ramda向数组中的对象添加id:s,但对于每个对象,id仅等于1Javascript 为arr.R.assoc中的对象添加id:s(';id';,i+;+;)而不是增加i,javascript,ramda.js,Javascript,Ramda.js,我试图用Ramda向数组中的对象添加id:s,但对于每个对象,id仅等于1 let i = 1; return R.evolve({ cms: { components: R.map(R.assoc('id', i++)), }, }, state), 我假设这与I++有关。一个不应该像拉姆达那样变异 但是,我该如何正确地执行此操作。您必须将其包装在函数中,否则将对I++求值一次,然后应用于所有元素 const state={ cms:{ 组成部分:[{ 姓
let i = 1;
return R.evolve({
cms: {
components: R.map(R.assoc('id', i++)),
},
}, state),
我假设这与I++有关。一个不应该像拉姆达那样变异
但是,我该如何正确地执行此操作。您必须将其包装在函数中,否则将对
I++
求值一次,然后应用于所有元素
const state={
cms:{
组成部分:[{
姓名:“Serge”
}, {
名字:“奥黛尔”
}, {
姓名:“西蒙”
}, {
名称:“Émile”
}]
}
};
设i=1,
modifiedState=R({
cms:{
组件:R.map((元素)=>R.assoc('id',i++,元素)),
},
},国家);
日志(modifiedState.cms.components)代码>
或者您可以像这样使用Ramda:
const transform=R({
cms:{
组成部分:R.addIndex(R.map)((comp,i)=>R.assoc('id',i+1,comp)),
},
})
常量状态={
cms:{
组成部分:[
{name:'Serge'},
{name:'Odile'},
{name:'Simon'},
{姓名:'Émile'}
]
}
};
console.log(转换(状态))
谢谢您快速的回答:)。这无疑解决了问题,因为它为每次迭代创建了一个新函数;但它看起来一点也不好。