给出
[
{"id":1,"country":"US","area":1,"values":[{"city":"Chicago"},{"city":"New York"}]},
{"id":2,"country":"Canada","area":2,"values":[{"city":"Toronto"},{"city":"Quebec"}]}
]
我正在尝试将数据展平为表格格式,将values数组中的每个对象作为一个表行,并重复父项字段。
结果
[
{"country":"US","city":"Chicago"},
{"country":"US","city":"New York"},
{"country":"Canada","city":"Toronto"},
{"country":"Canada","city":"Quebec"}
]
我想提一下从父字段中保留哪些字段。对于前单个字段,即我们示例中的国家字段。其他示例可能包括多个或所有父字段。
有没有一种优雅的方式来达到预期的效果?现在我正在使用嵌套for循环来实现相同的目标。
答案 0 :(得分:1)
它最终是两个嵌套循环,但您可以利用map
和reduce
来简化代码。见下文:
const input = [
{"id":1,"country":"US","area":1,"values":[{"city":"Chicago"},{"city":"New York"}]},
{"id":2,"country":"Canada","area":2,"values":[{"city":"Toronto"},{"city":"Quebec"}]}
];
const result = input.reduce((output, {country, values}) =>
output.concat(values.map(({city}) => ({ country, city }))), []);
console.log(result);