JS如何将嵌套数组数据扁平化成目标键值对格式?

JS如何将嵌套数组数据扁平化成目标键值对格式?
最新回答
碍人

2021-06-29 03:11:14

在 JavaScript 中,可以使用 flatMap 和 map 方法将嵌套数组数据扁平化为目标键值对格式。以下是具体实现步骤和代码示例:

  • 核心思路:通过 flatMap 遍历原始数组中的每个对象,再利用 map 处理嵌套的 secondname 数组,生成扁平化的键值对对象。

  • 代码实现

const data = { "result": [ { "name": "参数1", "secondname": ["高度", "马赫数"] }, { "name": "参数2", "secondname": ["前向", "垂向", "侧向"] }, { "name": "参数3", "secondname": ["前向", "垂向", "侧向"] } ]};const flattenedResult = data.result.flatMap(item => item.secondname.map(secondName => ({ name: item.name, secondname: secondName })));const targetFormat = { result: flattenedResult };console.log(JSON.stringify(targetFormat, null, 2));
  • 代码解释

    flatMap 方法:遍历 data.result 数组中的每个对象(item),对每个对象执行映射操作,并将结果扁平化为一个新数组。

    内部 map 方法:针对每个对象的 secondname 数组,生成一个新对象 { name: item.name, secondname: secondName },其中 secondName 是 secondname 数组中的当前元素。

    结果整合:将扁平化后的数组 flattenedResult 嵌入到 { result: ... } 对象中,形成最终的目标格式。

  • 输出结果

{ "result": [ { "name": "参数1", "secondname": "高度" }, { "name": "参数1", "secondname": "马赫数" }, { "name": "参数2", "secondname": "前向" }, { "name": "参数2", "secondname": "垂向" }, { "name": "参数2", "secondname": "侧向" }, { "name": "参数3", "secondname": "前向" }, { "name": "参数3", "secondname": "垂向" }, { "name": "参数3", "secondname": "侧向" } ]}
  • 方法优势

    简洁性:相比传统的 reduce 和 concat 组合,flatMap + map 的写法更直观,减少了中间变量的使用。

    高效性:flatMap 内部优化了数组扁平化过程,避免了手动拼接数组的性能开销。

    可读性:代码逻辑清晰,易于理解和维护。

通过上述方法,可以高效地将嵌套数组数据转换为所需的键值对格式。