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

如何将数组中含共同值的对象按该值分组为键值对结构?

实现数组按指定属性分组的方法

当然有方法实现这个需求,下面是几种常用的JavaScript实现方式:

方法一:使用数组reduce方法(推荐)

reduce是处理数组聚合场景的高效工具,代码简洁且符合函数式编程风格:

var data = [
   {a: 1, b: 2}, 
   {a: 2, b: 4}, 
   {a: 1, b: 6}, 
   {a: 2, b: 9}
];

const treat = data.reduce((acc, curr) => {
  const key = curr.a;
  // 若当前键不存在,初始化空数组
  if (!acc[key]) {
    acc[key] = [];
  }
  // 将当前对象推入对应数组
  acc[key].push(curr);
  return acc;
}, {});

console.log(treat);

方法二:ES6+简化版reduce写法

利用逻辑或赋值运算符??=简化数组初始化逻辑:

const treat = data.reduce((acc, curr) => {
  const key = curr.a;
  acc[key] ??= [];
  acc[key].push(curr);
  return acc;
}, {});

方法三:普通for...of循环

如果更习惯命令式编程风格,用普通循环也能实现:

var data = [
   {a: 1, b: 2}, 
   {a: 2, b: 4}, 
   {a: 1, b: 6}, 
   {a: 2, b: 9}
];

const treat = {};
for (const item of data) {
  const key = item.a;
  if (!treat[key]) {
    treat[key] = [];
  }
  treat[key].push(item);
}

console.log(treat);

以上三种方法最终都会生成你需要的结构:

const treat = {
    1: [{a:1,b:2}, {a:1,b:6}],
    2: [{a:2,b:4}, {a:2,b:9}]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 14:18:20