展平内部数组但分配外部属性
Flatten inner array but assign outer properties
我有这样的输入:
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 数组函数),还是我应该自己编写一个函数来处理这个问题?
您可以使用 .flatMap()
on your input
array to loop over each object, along with an inner .map()
将每个 inner_array 映射到一个新对象。新对象可以是 outer_data
值与 inner_data
值的组合。然后 .flatMap()
方法会将 input
中每个对象的内部 .map()
调用的所有返回对象合并到一个结果数组中:
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);
我有这样的输入:
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 数组函数),还是我应该自己编写一个函数来处理这个问题?
您可以使用 .flatMap()
on your input
array to loop over each object, along with an inner .map()
将每个 inner_array 映射到一个新对象。新对象可以是 outer_data
值与 inner_data
值的组合。然后 .flatMap()
方法会将 input
中每个对象的内部 .map()
调用的所有返回对象合并到一个结果数组中:
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);