如何用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
相关产品推荐
相关产品推荐

