首页 > 解决方案 > 将嵌套的 json 数组修改为更漂亮的样式对象

问题描述

我有这个 json 文件我怎样才能更简化它

注意:我无法修改它来自我无法控制的后端 api 的 json

示例JSON:

[
  {
    "Supermarket":[
      {
        "Food Cupboard":[
          "Grains & Rice",
          "Pasta & Noodles",
          "Cooking Oil",
          "Vinegar",
          "Sauce & Dressings",
          "Sugars & Sweeteners",
          "Flour",
          "Herbs & Spices"
        ]
      },
      {
        "Beverages":[
          "Juices",
          "Soft Drinks",
          "Coffee, Tea & Cocoa",
          "Water",
          "Powdered Drink Mixes & Flavorings"
        ]
      }
    ]
  }
]

我需要的结果是什么

{
  "Supermarket":{
    "Food Cupboard":[
      "Grains & Rice",
      "Pasta & Noodles",
      "Cooking Oil",
      "Vinegar",
      "Sauce & Dressings",
      "Sugars & Sweeteners",
      "Flour",
      "Herbs & Spices"
    ],
    "Beverages":[
      "Juices",
      "Soft Drinks",
      "Coffee, Tea & Cocoa",
      "Water",
      "Powdered Drink Mixes & Flavorings"
    ]
  }
}

然后我尝试通过整个 json 进行映射并分配不同的值和键但没有用你能帮我吗

标签: javascriptnode.jsjson

解决方案


您可以使用.reduceSupermarket项目分组为一个对象:

const data = [
  {
    "Supermarket":[
      {
        "Food Cupboard":[
          "Grains & Rice", "Pasta & Noodles", "Cooking Oil", "Vinegar", "Sauce & Dressings", "Sugars & Sweeteners", "Flour", "Herbs & Spices" ]
      },
      {
        "Beverages":[ "Juices", "Soft Drinks", "Coffee, Tea & Cocoa", "Water", "Powdered Drink Mixes & Flavorings" ]
      }
    ]
  }
];

const res = data.map(e => {
  const current = {...e};
  current.Supermarket = 
    current.Supermarket.reduce((acc, item) => Object.assign(acc, item), {});
  return current;
});

console.log(res);


推荐阅读