JavaScript:对象的重组和数组
我从一个API获取数据,如下所示:JavaScript:对象的重组和数组,javascript,arrays,object,Javascript,Arrays,Object,我从一个API获取数据,如下所示: desserts: [ { name: ["Frozen Yohurt", "Ice cream Sandwich", "Egg"], calories: [159, 237, 109] }, desserts: [ { name: "Frozen Yogurt", calories: 159},
desserts: [
{
name: ["Frozen Yohurt", "Ice cream Sandwich", "Egg"],
calories: [159, 237, 109]
},
desserts: [
{ name: "Frozen Yogurt", calories: 159},
{ name: "Ice cream sandwich", calories: 237 },
{name: "Egg", calories: 109 }
],
我的组件(Vuetify Datatable)希望数据采用完全不同的形式,如下所示:
desserts: [
{
name: ["Frozen Yohurt", "Ice cream Sandwich", "Egg"],
calories: [159, 237, 109]
},
desserts: [
{ name: "Frozen Yogurt", calories: 159},
{ name: "Ice cream sandwich", calories: 237 },
{name: "Egg", calories: 109 }
],
我没能解决它。这个()看起来很相似,但给出了不同的结果。有人能帮我吗?您可以使用中的索引参数。可用于阵列中任意数量的对象
让arr=[
{
名称:[“冷冻约赫特”、“冰淇淋三明治”、“鸡蛋”],
卡路里:[159237109]
}
];
让res=arr.flatMap(({name,carries})=>
name.map((name,idx)=>({name,carries:carries[idx]}));
控制台日志(res)代码>您可以对每个对象进行一次迭代。只需确保两个阵列的长度相等:
let deserts=[
{
名称:[“冷冻约赫特”、“冰淇淋三明治”、“鸡蛋”],
卡路里:[159237109]
}
];
让列表=[];
for(设i=0;i 控制台日志(列表)代码>您可以减少对象的条目,并将找到的值与键一起映射为对象
这种方法只取desserts
数组中找到的第一个对象
const
甜点={name:[“冷冻酸奶”、“冰淇淋三明治”、“鸡蛋”],卡路里:[159237109]},
结果=对象
.参赛作品(甜品)
.reduce((r[k,values])=>values.map((v,i)=>({…r[i],[k]:v})),[]);
控制台日志(结果)代码>
.as控制台包装{max height:100%!important;top:0;}
用于将每个项目展平到所需的结构
const obj={
甜点:[{
名称:[“冷冻约赫特”、“冰淇淋三明治”、“鸡蛋”],
卡路里:[159237109]
}]
};
const result=obj.deserts.reduce((acc,{name,carries})=>{
Array.prototype.push.apply(acc,name.map((item,idx)=>({
名称:项目,
卡路里:卡路里[idx]
})));
返回acc;
}, []);
控制台日志(结果)代码>以下是您可以执行的操作:
要将数据转换为所需内容,请执行以下操作:
desserts: [
{
name: ["Frozen Yohurt", "Ice cream Sandwich", "Egg"],
calories: [159, 237, 109]
},
desserts: [
{ name: "Frozen Yogurt", calories: 159},
{ name: "Ice cream sandwich", calories: 237 },
{name: "Egg", calories: 109 }
],
const requiredOutput=[];
例如(比如甜点){
instance.name.forEach((名称,索引)=>{
请求输出({
姓名:姓名,,
卡路里:例如。卡路里[索引]
})
})
}
该链接已经给出了您的答案question@DataMastery没问题。