You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并对象数组中的firstName与lastName并返回指定格式数组?

问题解决:合并对象数组中的姓名字段

问题描述

需要将对象数组中每个元素的firstName与lastName合并为name字段,返回指定格式的对象数组,尝试使用map和forEach方法但未成功。

原始数据

[
  {
    "id": 1321,
    "createdAt": "2022-08-03T12:36:20.096Z",
    "UpdatedAt": "2022-08-03T12:36:20.096Z",
    "firstName": "g",
    "lastName": "prashanth",
    "zipCode": "39493",
    "NPI": "990343"
  },
  {
    "id": 1322,
    "createdAt": "2022-08-03T12:36:20.096Z",
    "UpdatedAt": "2022-08-03T12:36:20.096Z",
    "firstName": "prasilla",
    "lastName": "shaik",
    "zipCode": "39493",
    "NPI": "990343"
  }
]

尝试的代码

let final_array: any=[]
data.forEach(function (value: any, a:any) {
let obj: any={}
    console.log(a)
     final_array.push( obj[keys_array[a]] = data[a]["firstName"]+" " +data[a]["lastName"], obj[keys_array[a]] =data[a]["zipCode"], obj[keys_array[a]]=data[a]["NPI"])
})

});

期望输出

[
  {
    "name": "g prashanth",
    "zipCode": "39493",
    "NPI": "990343"
  },
  {
    "name": "prasilla shaik",
    "zipCode": "39493",
    "NPI": "990343"
  }
]

代码问题分析

你原来的代码存在几个关键问题:

  1. keys_array未定义,导致无法正确设置对象的键名;
  2. 重复使用obj[keys_array[a]]作为键名,每次赋值都会覆盖之前的属性值;
  3. final_array.push()中传入的是多个赋值表达式的结果,而非完整的对象,无法得到期望的结构。

解决方案

方法一:使用map(推荐)

map方法专门用于将数组元素转换为新的结构,直接返回新数组,代码更简洁高效:

const transformedData = data.map(item => ({
  name: `${item.firstName} ${item.lastName}`,
  zipCode: item.zipCode,
  NPI: item.NPI
}));

方法二:使用forEach

如果坚持用forEach,需要先构建好完整对象再推入数组:

let final_array: any[] = [];
data.forEach(item => {
  const obj = {
    name: `${item.firstName} ${item.lastName}`,
    zipCode: item.zipCode,
    NPI: item.NPI
  };
  final_array.push(obj);
});

两种方法都能得到你需要的输出结构,map更符合函数式编程的风格,代码更简洁,优先推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 09:45:25