首页 > 解决方案 > JavaScript:重组和对象数组

问题描述

我从如下所示的 API 获取数据:

  desserts: [
    {
      name: ["Frozen Yohurt", "Ice cream Sandwich", "Egg"],
      calories: [159, 237, 109]
    },

我的组件(Vuetify Datatable)期望数据采用完全不同的形式,如下所示:

    desserts: [
    { name: "Frozen Yogurt", calories: 159},        
    { name: "Ice cream sandwich", calories: 237 },
     {name: "Egg", calories: 109 }
    ],

我无法解决它。这(从两个数组创建一个 JavaScript 对象)看起来非常相似,但给出了不同的结果。谁能帮我?

标签: javascriptarraysobject

解决方案


您可以使用中的 index 参数Array#mapArray#flatMap可以使用,因此它适用于数组中的任意数量的对象。

let arr = [
    {
      name: ["Frozen Yohurt", "Ice cream Sandwich", "Egg"],
      calories: [159, 237, 109]
    }
];
let res = arr.flatMap(({name,calories}) => 
  name.map((name,idx)=>({name,calories:calories[idx]})));
console.log(res);


推荐阅读