javascript - 将嵌套的 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 进行映射并分配不同的值和键但没有用你能帮我吗
解决方案
您可以使用.reduce
将Supermarket
项目分组为一个对象:
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);
推荐阅读
- batch-file - 为什么 FOR 在 IN 之后会因延迟子字符串扩展而失败?
- python - 如何从特定的开始日期绘制时间序列?
- google-app-engine - 在谷歌云中托管应用程序的大并发请求的定价是多少
- git - 修复提交后 git 如何处理 squash 提交?
- arrays - 如何使用 scala 过滤火花的数据帧数组
- node.js - 上传到火力基地
- typescript - 将参数传递到打字稿中是如何工作的?
- react-native - 更新 react-native-maps 以使用 create-react-native-app
- ios - 将日期添加到字符串日期 swift
- c++ - 如何找出 Kernel32 依赖项的来源