Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为arr.R.assoc中的对象添加id:s(';id';,i+;+;)而不是增加i_Javascript_Ramda.js - Fatal编程技术网

Javascript 为arr.R.assoc中的对象添加id:s(';id';,i+;+;)而不是增加i

Javascript 为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:{ 组成部分:[{ 姓

我试图用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:{
组成部分:[{
姓名:“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(转换(状态))

谢谢您快速的回答:)。这无疑解决了问题,因为它为每次迭代创建了一个新函数;但它看起来一点也不好。