javascript - 将嵌套 JSON 数组转换为平面 JSON 数组
问题描述
我有一个嵌套的 JSON 数组,它从我想转换为平面 JSON 的 mongoDB 查询中获取。我正在使用嵌套的 mondo 文档,但我想以更易读的方式显示数据。我的 JSON 具有以下结构:
[{
"country": "Country A",
"regions": [{
"region": "region A1",
"cities": [{
"city": "city A11"
},
{
"city": "city A12"
}
]
},
{
"region": "region A2",
"cities": [{
"city": "city A21"
},
{
"city": "city A22"
}
]
}
]
},
{
"country": "Country B",
"regions": [{
"region": "region B1",
"cities": [{
"city": "city B11"
},
{
"city": "city B12"
}
]
},
{
"region": "region B2",
"cities": [{
"city": "city B21"
},
{
"city": "city B22"
}
]
}
]
}
]
我只想显示重要信息而不是嵌套数组的结构。我如何在 Javascript 中修改我的数据以实现以下结果。
[
{
"country": "Country A",
"region":"Region A1",
"city": "City A11"
},
{
"country": "Country A",
"region":"Region A1",
"city": "City A12"
},
-------------
{
"country": "Country B",
"region":"Region B1",
"city": "City B11"
},
-----------
{
"country": "Country B",
"region":"Region B2",
"city": "City B22"
}
]
实现此结果的最简单方法是什么?
解决方案
最简单的方法是循环并创建一个数组。你可以这样做reduce()
:
let arr = [{"country": "Country A","regions": [{"region": "region A1","cities": [{"city": "city A11"},{"city": "city A12"}]},{"region": "region A2","cities": [{"city": "city A21"},{"city": "city A22"}]}]},{"country": "Country B","regions": [{"region": "region B1","cities": [{"city": "city B11"},{"city": "city B12"}]},{"region": "region B2","cities": [{"city": "city B21"},{"city": "city B22"}]}]}]
let flat = arr.reduce((arr, {country, regions}) => {
regions.forEach(({region, cities}) => {
cities.forEach(({city}) => {
arr.push({country, region, city})
})
})
return arr
}, [])
console.log(flat)
推荐阅读
- pine-script - RSI 跟踪 pinescript
- html - VBA-Wedriver-Selenium-Xpath - 修改类值 - 单击按钮 -Excel
- r - 如何在散点图上叠加箱线图?
- mysql - 选择多行,其中值的差异大于 x%
- javascript - 在Javascript中使用一个按钮一次显示一个数组字符串
- c++ - 有没有办法在 C++ 中使用条件预处理器
- python - ValueError:无法将字符串转换为浮点数:'2100 - 2850'
- ruby-on-rails - 我怎样才能创建这个简单的小测试?
- docker - 跳转 dockerfile/docker-compose 上下文
- python - 访问被拒绝 Django:(1045,“用户'darth_vader'@'151.33.241.48'的访问被拒绝(使用密码:YES)”)