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

如何用JavaScript/ES6将对象数组转换为单对象并重命名属性

对象数组转指定键名的单个对象

给定如下对象数组:

const requestData = [
  {
    name: 'Test1',
    address: 'FL',
  },
  {
    name: 'Test2',
    address: 'AL',
  },
  {
    name: 'Test3',
    address: 'AK',
  },
]; 

需要按索引替换每个对象的属性名,最终合并为单个对象:

const finalResult = {
  USER_NAME: 'Test1',
  USER_ADDRESS: 'FL',
  EMP_NAME: 'Test2',
  EMP_ADDRESS: 'AL',
  CUST_NAME: 'Test3',
  CUST_ADDRESS: 'AK',
};

实现方式

方式一:直接赋值(适合固定少量元素)

这种方式简单直观,直接根据索引提取值并赋予新键名:

const requestData = [
  { name: 'Test1', address: 'FL' },
  { name: 'Test2', address: 'AL' },
  { name: 'Test3', address: 'AK' },
];

const finalResult = {
  USER_NAME: requestData[0].name,
  USER_ADDRESS: requestData[0].address,
  EMP_NAME: requestData[1].name,
  EMP_ADDRESS: requestData[1].address,
  CUST_NAME: requestData[2].name,
  CUST_ADDRESS: requestData[2].address,
};

方式二:映射表+reduce(适合可扩展场景)

如果后续可能新增元素,用映射表定义键名对应关系,再通过reduce遍历合并,更灵活:

const requestData = [
  { name: 'Test1', address: 'FL' },
  { name: 'Test2', address: 'AL' },
  { name: 'Test3', address: 'AK' },
];

// 定义每个索引对应的新键名
const keyMappings = [
  { name: 'USER_NAME', address: 'USER_ADDRESS' },
  { name: 'EMP_NAME', address: 'EMP_ADDRESS' },
  { name: 'CUST_NAME', address: 'CUST_ADDRESS' },
];

const finalResult = requestData.reduce((result, item, index) => {
  const { name, address } = keyMappings[index];
  result[name] = item.name;
  result[address] = item.address;
  return result;
}, {});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 13:20:30