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

如何使用jQuery在循环内对项目进行分组?

解决方案:将二维数组按首元素分组为对象

你可以使用reduce方法(或者在循环中直接处理)来实现分组,这比多次过滤更高效,代码逻辑也更简洁:

方法一:先收集所有项再用reduce处理

如果能先把循环中得到的所有项收集到一个数组里,用reduce一次性处理:

// 假设循环得到的所有项已存入items数组
const items = [
  ['ab', 'sd'],
  ['ab', 'dc'],
  ['ab', 'ca'],
  ['bc', 'ds'],
  ['bc', 'ea']
];

const groupedObj = items.reduce((acc, [key, value]) => {
  // 若当前键未在累加器中,初始化空数组
  acc[key] = acc[key] || [];
  // 将值推入对应数组
  acc[key].push(value);
  return acc;
}, {});

console.log(groupedObj);
// 输出:{ ab: ['sd', 'dc', 'ca'], bc: ['ds', 'ea'] }

方法二:循环中实时处理

如果只能在每次循环迭代时处理单个项,直接维护结果对象即可:

// 初始化空结果对象
const groupedObj = {};

// 模拟你的循环过程
const loopItems = [['ab', 'sd'], ['ab', 'dc'], ['ab', 'ca'], ['bc', 'ds'], ['bc', 'ea']];
for (const [key, value] of loopItems) {
  // 键不存在则创建空数组
  if (!groupedObj[key]) {
    groupedObj[key] = [];
  }
  groupedObj[key].push(value);
}

console.log(groupedObj);
// 输出同上

核心逻辑是:每次拿到键值对后,检查结果对象中是否存在该键,不存在则初始化对应的空数组,再将当前值推入数组。这种方式只需要遍历一次所有项,比反复过滤相同键的元素效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 08:50:24