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

如何按indexofitem字段值将对象数组拆分为多个子数组?

通用数组分组实现方案

刚好之前做过类似的需求,用JavaScript的Array.prototype.reduce()就能轻松实现这个通用的按指定键分组的功能,完全不用局限于indexofitem的特定值,下面直接上代码和解释:

代码实现

// 你的原始数组
const originalArray = [
  {indexofitem: 0, indexofchild_1: 0, name: "dfds", setName: "SET A", quantity: 2, price: 500},
  {indexofitem: 0, indexofchild_1: 1, name: "bvcxvb", setName: "SET B", quantity: 2, price: 500},
  {indexofitem: 0, indexofchild_1: 2, name: "vcx", setName: "SET C", quantity: 2, price: 500},
  {indexofitem: 1, indexofchild_1: 3, name: "vxc", setName: "SET A", quantity: 1, price: 500},
  {indexofitem: 1, indexofchild_1: 4, name: "vcx", setName: "SET B", quantity: 1, price: 500},
  {indexofitem: 1, indexofchild_1: 5, name: "cxvxz", setName: "SET C", quantity: 2, price: 500}
];

// 通用分组函数:接收数组和分组键名,返回分组后的结构
function groupBy(arr, groupKey) {
  return arr.reduce((groupedResult, currentItem) => {
    // 获取当前项的分组键值
    const keyValue = currentItem[groupKey];
    // 如果当前分组不存在,初始化一个空数组
    if (!groupedResult[keyValue]) {
      groupedResult[keyValue] = [];
    }
    // 将当前项推入对应分组
    groupedResult[keyValue].push(currentItem);
    return groupedResult;
  }, {}); // 初始值为空白对象,用于存储所有分组
}

// 按indexofitem分组
const groupedData = groupBy(originalArray, 'indexofitem');

// 如果你需要得到「数组的数组」形式(而非键值对对象),可以转换一下
const groupedArrays = Object.values(groupedData);

// 输出结果看看
console.log(groupedArrays);

功能说明

  • 这个groupBy函数是完全通用的:不仅可以按indexofitem分组,传入任何其他键名(比如setName)都能实现对应的分组逻辑;
  • 最终的groupedArrays就是你要的结果:每个子数组对应一组相同indexofitem值的对象,不管indexofitem是0、1还是其他任何值,都能自动分组;
  • 如果保留groupedData的对象形式,还可以通过键名快速访问对应分组(比如groupedData[0]直接拿到indexofitem为0的所有元素)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 13:27:26