我有一个这样的输入:
var input = [
{
"inner_array": [
{
"inner_data": "inner_data1"
},
{
"inner_data": "inner_data2"
}
],
"outer_data": "outer_data",
}
];
我想把它处理成这样。
var output = [
{
"inner_data": "inner_data1",
"outer_data": "outer_data",
},
{
"inner_data": "inner_data2",
"outer_data": "outer_data",
}
];
换句话说:我想使内部数组变平,同时仍然保留外部数组的属性。这有一个简单的解决方案吗(使用内置的lambda数组函数(,或者我应该自己写一个处理这个问题的函数吗?
您可以在input
数组上使用.flatMap()
在每个对象上循环,同时使用内部.map()
将每个inner_array映射到一个新对象。新对象可以是outer_data
值与inner_data
值的组合。然后,.flatMap()
方法将从内部.map()
调用中为input
中的每个对象返回的所有对象合并为一个结果数组:
const input = [{ "inner_array": [{ "inner_data": "inner_data1" }, { "inner_data": "inner_data2" } ], "outer_data": "outer_data", }];
const res = input.flatMap(obj => obj.inner_array.map(inner => ({
...inner,
outer_data: obj.outer_data
})));
console.log(res);