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

如何将多组数组对象按Key合并为单行对象数组?

数组对象结构转换实现方案

需求说明

原始数据:

var dataarray = [{Region: 'Asia', Total: '0.50'},
                 {Region: 'America', Total: '1.50'},
                 {Region: 'Middle East', Total: '1.50'}]

期望转换结果:

var convertarray = [{'Asia' : '0.50', 'America' : '1.50', 'Middle East' : '1.50'}]

原代码问题分析

你当前的代码逻辑存在偏差:每次遍历都会创建包含Region属性的新对象并推入result数组,最终生成多个对象的数组,而非需求中单个对象包裹在数组内的结构,额外的补全逻辑也不符合需求目标。

正确实现方式

方法1:使用reduce(简洁写法)

利用数组reduce方法直接构建目标对象,再将其放入数组:

var dataarray = [{Region: 'Asia', Total: '0.50'},
                 {Region: 'America', Total: '1.50'},
                 {Region: 'Middle East', Total: '1.50'}];

var convertarray = [dataarray.reduce((accumulator, current) => {
  // 将Region作为键,Total作为值存入累加对象
  accumulator[current.Region] = current.Total;
  return accumulator;
}, {})]; // 初始值为空对象

console.log(convertarray);

方法2:普通循环写法

如果更习惯基础循环,可先创建空对象,遍历赋值后再包裹进数组:

var dataarray = [{Region: 'Asia', Total: '0.50'},
                 {Region: 'America', Total: '1.50'},
                 {Region: 'Middle East', Total: '1.50'}];

var targetObj = {};
dataarray.forEach(item => {
  targetObj[item.Region] = item.Total;
});
var convertarray = [targetObj];

console.log(convertarray);

两种方法最终都会输出符合需求的结构:[{"Asia":"0.50","America":"1.50","Middle East":"1.50"}]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 05:12:12