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

Javascript如何对数组对象按品牌分组并修改参数名实现格式转换

实现方案

这种分组聚合类的数组转换需求,优先使用Array.prototype.reduce()实现,它可以在遍历过程中直接累积分组结果,比单独用map的实现逻辑更简洁高效。

完整可运行代码如下:

const mobiles = [
    {
        BRAND_NAME: 'Samsung',
        MODEL_NAME: 'Galaxy Note 9',
        MANUFACTURE_DATE: '2021-11-02'
    },
    {
        BRAND_NAME: 'Samsung',
        MODEL_NAME: 'Galaxy S10',
        MANUFACTURE_DATE: '2021-10-02'
    },
    {
        BRAND_NAME: 'Apple',
        MODEL_NAME: 'Iphone X',
        MANUFACTURE_DATE: '2020-11-02'
    }
];

const groupResult = Object.values(mobiles.reduce((acc, current) => {
  const currentBrand = current.BRAND_NAME;
  // 不存在对应品牌分组时先初始化
  if (!acc[currentBrand]) {
    acc[currentBrand] = {
      brandname: currentBrand,
      details: []
    };
  }
  // 字段重命名后加入对应分组的详情列表
  acc[currentBrand].details.push({
    modelname: current.MODEL_NAME,
    manufacturedate: current.MANUFACTURE_DATE
  });
  return acc;
}, {}));

console.log(groupResult);

上述代码执行后输出的结果和你要求的目标格式完全匹配。

逻辑说明

  • 首先用reduce遍历原数组,以品牌名为key临时存储分组结果,天然避免重复创建相同品牌的分组项
  • 遍历过程中直接完成字段名的转换,把原大写下划线命名的字段映射为你需要的小写命名字段
  • 最后调用Object.values()把存储分组的临时对象转换为数组,得到最终结果

如果后续有更多字段需要转换,也可以提前定义字段映射表,批量处理字段重命名逻辑,不需要手动逐个写映射关系。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:54:04