展平内部数组但分配外部属性

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