Arrays 是否有其他解决方案可以使用'R.applySpec',而不插入未更改的键值?

Arrays 是否有其他解决方案可以使用'R.applySpec',而不插入未更改的键值?,arrays,ramda.js,Arrays,Ramda.js,是否有其他解决方案可以使用R.applySpec而不插入未更改的键值?(在示例中不需要键入id和name键,因为稍后键将动态更改)。多谢各位 这是我的输入数据 const data=[ [ {id:'data1',name:'it is data 1',itemId:'item1'}, {id:'data1',name:'it is data 1',itemId:'item2'} ], [ {id:'data2',name:'it is data 2',itemId:'item1'} ],

是否有其他解决方案可以使用
R.applySpec
而不插入未更改的键值?(在示例中不需要键入id和name键,因为稍后键将动态更改)。多谢各位

这是我的输入数据

const data=[
[ 
{id:'data1',name:'it is data 1',itemId:'item1'},
{id:'data1',name:'it is data 1',itemId:'item2'}
],
[ 
{id:'data2',name:'it is data 2',itemId:'item1'}
],
[ 
{id:'data3',name:'it is data 3',itemId:'item1'},
{id:'data3',name:'it is data 3',itemId:'item2'}
] 
]
以及输出

[
{ 
id:'data1',//此项不会更改
名称:'这是数据1',//这一个不变
itemId:['item1','item2']
},
{ 
id:'data2',//此项不会更改
名称:'这是数据2',//这一个不变
itemId:['item1']
},
{ 
id:'data3',//此项不会更改
名称:'这是数据3',//这一个不变
itemId:['item1','item2']
} 
]
使用Ramda获取输出的解决方案

const result=R.map(
R.applySpec({
id:R.path([0,'id']),
名称:R.path([0,'name']),//无需再次键入id或名称
itemId:R.pull('itemId')
})
)(数据)

我们当然可以用Ramda编写如下内容:

const convert=map(lift(mergeRight)(头部、管道(pull('itemId')、objOf('itemId'))
const data=[{id:'data1',name:'it is data 1',itemId:'item1'},{id:'data1',name:'it is data 1',itemId:'item2'}],{id:'data2',name:'it is data 2',itemId:'item1'},{id:'item1 item1'},{id:'data3',name:'it is data 3',itemId:'itemId:'item2'}]
console.log(转换(数据))
。作为控制台包装{最小高度:100%!重要;顶部:0}


const{map,lift,mergeRight,head,pipe,pull,objOf}=R
谢谢你的回答和解释。是的,我试过使用
evolve
,正如您所解释的,它只接受当前值。再次感谢你。