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

如何用ES6合并多数组并按symbol键聚合生成价格对比表格?

如何用ES6合并数组并按symbol聚合生成价格对比表格?

首先,我得先理清你的需求:你有多个包含symbol和price的数组,想要把它们合并,按symbol聚合后生成一个价格对比表格,每个symbol对应各个数组里的价格。

先看看你提供的输入数组:

Array 1

[ { "symbol": "CAT", "price": "10" }, { "symbol": "DOG ", "price": "15" } ]

Array 2

[ { "symbol": "CAT", "price": "20" }, { "symbol": "DOG ", "price": "25" } ]

Array 3

[ { "symbol": "CAT", "price": "15" }, { "symbol": "DOG ", "price": "13" } ]

你之前尝试的代码有几个问题:Object.entries()只能接受单个对象作为参数,不能直接传多个数组;而且map的逻辑也没处理多数组的聚合,还没正确返回结果。

下面是用ES6实现的完整方案,步骤清晰,还处理了symbol前后空格的问题(比如你数组里的DOG 带空格,避免和DOG不匹配):

实现代码

// 定义你的输入数组
const array1 = [ { "symbol": "CAT", "price": "10" }, { "symbol": "DOG ", "price": "15" } ];
const array2 = [ { "symbol": "CAT", "price": "20" }, { "symbol": "DOG ", "price": "25" } ];
const array3 = [ { "symbol": "CAT", "price": "15" }, { "symbol": "DOG ", "price": "13" } ];

// 把每个数组和对应的价格列名配对,方便后续处理
const priceGroups = [
  { data: array1, column: 'Price1' },
  { data: array2, column: 'Price2' },
  { data: array3, column: 'Price3' }
];

// 用reduce构建聚合对象,key是去空格后的symbol,value是包含所有价格的对象
const aggregatedData = priceGroups.reduce((acc, { data, column }) => {
  data.forEach(item => {
    const cleanSymbol = item.symbol.trim();
    // 如果这个symbol还没被初始化,先创建基础对象
    if (!acc[cleanSymbol]) {
      acc[cleanSymbol] = { Name: cleanSymbol };
    }
    // 给当前symbol添加对应列的价格
    acc[cleanSymbol][column] = item.price;
  });
  return acc;
}, {});

// 把聚合对象转换成数组,方便生成表格行
const resultRows = Object.values(aggregatedData);

// 生成最终的表格字符串
const tableHeader = 'Name|Price1|Price2|Price3|\n';
const tableBody = resultRows.map(row => `${row.Name} | ${row.Price1} | ${row.Price2} | ${row.Price3} |`).join('\n');
const finalTable = tableHeader + tableBody;

console.log(finalTable);

运行结果

运行上面的代码后,你会得到想要的表格:

Name|Price1|Price2|Price3|
CAT | 10 | 20 | 15 |
DOG | 15 | 25 | 13 |

关键说明

  1. 去空格处理:用trim()清理symbol的前后空格,避免因为空格导致同个标识被当成不同项(比如你的DOG 和没空格的DOG)。
  2. reduce聚合:通过reduce逐步构建聚合对象,遍历每个价格数组时,把对应价格添加到对应的symbol条目下。
  3. 灵活扩展:如果以后新增更多价格数组,只需要在priceGroups里添加新的配对项即可,不用修改核心逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:59:56