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

请教各位一个问题,求解答:已知二个数组,需要转成一个新得数据谢谢哈~

/ 猿问

请教各位一个问题,求解答:已知二个数组,需要转成一个新得数据谢谢哈~

哆啦的时光机 2019-09-13 11:05:57
constskutitle=[{
label:"颜色",
prop:"val",
},{
label:"尺寸",
prop:"val1",
},
{
label:"形状",
prop:"val2",
},{
label:"规格",
prop:"val3",
}]//表格头
consttableData=[{
val:"红",
val1:"大",
val2:"五边形",
val3:"1*222",
price:"22"
},{
val:"绿",
val1:"大",
val2:"6边形",
val3:"1*2224",
price:"2244"
},{
val:"蓝",
val1:"大",
val3:"1*225",
val2:"八边形",
price:"2244"
}]
constall=[{
'颜色':"蓝",
'尺寸':"大",
'形状':"八边形",
'规格':"1*225",
'价格':"2244"
}]
skutitle数组和tableData数组转成all数组那种数据格式得,目前代码如下
functionarrayList(skutitle,tableData){
varresult=[]
for(leti=0;ivarcol_label=skutitle[i].label
varcol_prop=skutitle[i].prop
varobj={}
for(letj=0;jconsole.log(tableData[j])
varitems=[]
for(letkeyintableData[j]){
if(skutitle[i].prop===key){
obj[skutitle[i].label]=tableData[j][key];
console.log(obj,'obj')
//items.push(obj)
}
}
console.log(items,"items")
result.push(items)
}
}
console.log(result,'77')
}
arrayList(skutitle,tableData)
通过打印是key值判断那边有点问题,没有思路了
                    
查看完整描述

2 回答

?
月关宝盒
你的表格头数据差一个价格,实现的方法如下,你看能否符合你的预期:
constsku2Obj=skutitle.reduce((total,cur)=>{
total[cur.prop]=cur.label;
returntotal;
},{});
constall=tableData.reduce((result,cur)=>{
letobj=Object.keys(cur).reduce((buffResult,buffCur)=>{
buffResult[sku2Obj[buffCur]]=cur[buffCur];
returnbuffResult;
},{});
result.push(obj);
returnresult;
},[]);
console.log(all);
                            
查看完整回答
反对 回复 2019-09-13
?
翻过高山走不出你
functiontransform(tableData,skutitle){
returntableData.map(data=>{
constkeys=Object.keys(data);
constnewKeys=keys.map(key=>getLabelByProp(key,skutitle));
constnewData={};
newKeys.forEach((key,i)=>{
newData[key]=data[keys[i]];
});
returnnewData;
});
functiongetLabelByProp(prop,skutitle){
for(leti=0;iif(skutitle[i].prop===prop)returnskutitle[i].label;
}
returnprop;
}
}
                            
查看完整回答
反对 回复 2019-09-13

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信