展平内部数组,但指定外部属性



我有一个这样的输入:

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);

最新更新