Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript:对象的重组和数组_Javascript_Arrays_Object - Fatal编程技术网

JavaScript:对象的重组和数组

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},

我从一个API获取数据,如下所示:

  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没问题。