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
,正如您所解释的,它只接受当前值。再次感谢你。