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

如何对JavaScript对象数组按orderSeries字段进行条件分组

JavaScript数组按指定规则分组实现方案

该需求完全可以实现,具体实现逻辑和代码如下:

实现思路

  • 用临时映射表存储非null的orderSeries对应的分组信息,避免重复遍历
  • 遍历原数组时对orderSeries为null和非null的元素做分支处理
  • 非null的相同orderSeries元素合并,将model和year存入cars数组,null值元素直接保留原有结构

完整实现代码

var list = [{
    'orderSeries': 26342,
    'make': 'audi',
    'model': 'r8',
    'year': '2012'
}, {
    'orderSeries': 26342,
    'make': 'audi',
    'model': 'rs5',
    'year': '2013'
}, {
    'orderSeries': null,
    'make': 'ford',
    'model': 'mustang',
    'year': '2012'
}, {
    'orderSeries': null,
    'make': 'ford',
    'model': 'fusion',
    'year': '2015'
}, {
    'orderSeries': null,
    'make': 'kia',
    'model': 'optima',
    'year': '2012'
}];

// 分组核心逻辑
const groupMap = {};
const result = [];

list.forEach(item => {
    const { orderSeries, make, model, year } = item;
    // orderSeries为null直接保留原结构
    if (orderSeries === null) {
        result.push(item);
        return;
    }
    // 非null值按orderSeries分组
    if (!groupMap[orderSeries]) {
        // 不存在对应分组则新建分组对象
        const group = {
            orderSeries,
            make,
            cars: []
        };
        groupMap[orderSeries] = group;
        result.push(group);
    }
    // 把当前车辆信息加入分组的cars数组
    groupMap[orderSeries].cars.push({ model, year });
});

// 替换原数组(按需使用)
list = result;
console.log(list);

补充说明

代码时间复杂度为O(n),仅需遍历原数组一次即可完成分组,效率较高。如果业务场景中相同orderSeries对应的make可能不一致,可以根据实际需求调整逻辑,比如保留首次出现的make、或者新增校验逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:45:00