将嵌套对象转换为csv,在csv中,最低属性的所有父对象都可以在单独的行中看到



我有一个嵌套对象,我想将其转换为平面线。下面是对象:

{
"United States": {
"New York": {
"first": 11,
"second": 7
},
"New Jersey": {
"first": 8,
"second": 2
},
"Pennsylvania": {
"first": 4,
"second": 2
}
}
},
{
"South America": {
"Brazil": {
"first": 5,
"second": 4
}
}
},
{
"Africa": {
"Zaire": {
"first": 2,
"second": 1
}
}
},
{
"Asia": {
"China": {
"first": 10,
"second": 4
},
"Japan": {
"first": 6,
"second": 3
}
}
},
{
"Eastern Europe": {
"Ukraine": {
"first": 2,
"second": 1
}
}
},
{
"Europe": {
"France": {
"first": 2,
"second": 4
},
"Germany": {
"first": 1,
"second": 7
},
"Portugal": {
"first": 3,
"second": 1
},
"Spain": {
"first": 5,
"second": 2
},
"Switzerland": {
"first": 1,
"second": 3
}
}
}

我希望能够像这样看到它,其中巢的顶层总是对每一行可见:

"United States", "New York", 11, 7
"United States", "New Jersey", 8, 2
"United States", "Pennsylvania", 4, 2
"South America":, "Brazil", 5, 4
"Africa", "Zaire", 2, 1
"Asia", "China", 10, 4
"Asia", "Japan", 6, 3
"Eastern Europe", "Ukraine", 2, 1
"Europe", "France", 2, 4
"Europe", "Germany", 1, 7
"Europe", "Portugal", 3, 1
"Europe", "Spain", 5, 2
"Europe", "Switzerland", 1, 3

我知道如何通过数组循环来实现这一点,但我不确定如何使用嵌套对象来实现。我搜索过s/o,但没有看到任何能做到这一点的东西。(我的实际数据集要长得多(欢迎任何帮助。非常感谢。

只需在结构的每个级别执行一个循环:

let data = [{"United States": {"New York": {"first": 11,"second": 7},"New Jersey": {"first": 8,"second": 2},"Pennsylvania": {"first": 4,"second": 2}}},{"South America": {"Brazil": {"first": 5,"second": 4}}},{"Africa": {"Zaire": {"first": 2,"second": 1}}},{"Asia": {"China": {"first": 10,"second": 4},"Japan": {"first": 6,"second": 3}}},{"Eastern Europe": {"Ukraine": {"first": 2,"second": 1}}},{"Europe": {"France": {"first": 2,"second": 4},"Germany": {"first": 1,"second": 7},"Portugal": {"first": 3,"second": 1},"Spain": {"first": 5,"second": 2},"Switzerland": {"first": 1,"second": 3}}}];
for (let obj of data) {
for (let [region, countries] of Object.entries(obj)) {
for (let [country, indicators] of Object.entries(countries)) {
console.log(region, country, ...Object.values(indicators));
}
}
}

最新更新