You need to enable JavaScript to run this app. JavaScript如何将嵌套数组转换为按指定键映射的对象数组
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何将嵌套数组转换为按指定键映射的对象数组

问题根因

当前代码生成多层嵌套结构的核心原因:内层遍历dataholder时,每匹配一个字段就返回一个仅包含单键值的独立对象,外层map拿到的就是这些独立对象组成的小数组,最终自然形成二维数组结构,和预期的扁平对象数组不匹配。

修复实现

核心调整逻辑:遍历提取字段时,不要返回多个分散的单键对象,要把所有dataholder定义的字段值合并到同一个目标对象中返回。

基于reduce实现(兼容性更好)

逻辑清晰,适合全场景使用:

const result = record?.map(item => {
  return dataholder?.reduce((targetObj, field) => {
    targetObj[field] = item?.[field]?.value
    return targetObj
  }, {})
})

基于Object.fromEntries实现(写法更简洁)

无需兼容老旧浏览器时可使用,代码量更少:

const result = record?.map(item => {
  return Object.fromEntries(
    dataholder?.map(field => [field, item?.[field]?.value])
  )
})
补充注意

你贴出的源数据record存在语法问题:第二个元素使用方括号包裹带具名键的结构,不属于合法JavaScript语法,实际业务中这个位置应该和第一个元素结构一致,为普通对象,否则会出现字段取值为undefined的异常。


内容的提问来源于stack exchange,提问作者sinnede

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.08 07:27:04