为了账号安全,请及时绑定邮箱和手机立即绑定

2个关系数组,数据格式的转换跪求!

2个关系数组,数据格式的转换跪求!

三国纷争 2019-07-27 00:45:05
vardata=[{name:'color',key:[1,2,3,4,5]},{name:'size',key:[1,2,3,4,5]},{name:'other',key:[1,2,3,4,5]},{name:'type',key:[1,2,3,4,5]},];vararr=[{color:"pink",size:"xm",other:'aaa',type:'one',price:100,weight:456},{color:"red",size:"xm",other:'bbb',type:'two',price:789,weight:789}];有两个数组data和arr,在data数组中的子对象的排列顺序为,第一个:{name:'color',key:[1,2,3,4,5]},第二个:{name:'size',key:[1,2,3,4,5]},第三个:{name:'other',key:[1,2,3,4,5]},第四个:{name:'type',key:[1,2,3,4,5]}。在arr数组中,子对象中color:"pink"和color:"red",属性,因为在data中,属性name:"color",排在data数组中的第一个,所以arr数组中两个子对象的color:"pink"color:"red",要转换成option1:"pink"和option1:"red",同样道理,需要把arr数组,变成下面arr1的数据格式,请问有什么比较灵活的方法可以实现?vararr1=[{option1:"pink",option2:"xm",option3:"aaa",option4:"one",price:100,weight:456},{option1:"red",option2:"xm",option3:"bbb",option4:"two",price:789,weight:789}]
查看完整描述

2 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

比较直接的方法,你也可以先将data转换成{color:'option1',size:'option2'}这种
consttransform=arr=>{
returnarr.map(item=>{
letresult={};
Object.keys(item).forEach(key=>{
constindex=data.findIndex(d=>d.name===key);
if(index!==-1){
result[`option${index}`]=item[key];
}else{
result[key]=item[key];
}
});
returnresult;
});
};
                            
查看完整回答
反对 回复 2019-07-27

添加回答

代码语言

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号