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

JavaScript如何按policy属性值分组对象数组并聚合action、company字段

实现方案

方案1:原生JavaScript实现(无第三方依赖)

// 原始输入数据
const rawData = [
    {
        "action": "VIEW",
        "policy": "FORM"
    },
    {
        "action": "CREATE",
        "policy": "USER"
    },
    {
        "action": "VIEW",
        "policy": "USER"
    },
    {
        "company": "Microsoft",
        "policy": "FORM"
    },
    {
        "company": "Facebook",
        "policy": "USER"
    },
    {
        "company": "Twitter",
        "policy": "USER"
    }
];

// 处理逻辑
const processedResult = rawData.reduce((acc, current) => {
    const { policy, action, company } = current;
    // 初始化对应policy的分组结构
    if (!acc[policy]) {
        acc[policy] = { action: [], company: [] };
    }
    // 聚合action字段:存在值且未重复则加入
    if (action && !acc[policy].action.includes(action)) {
        acc[policy].action.push(action);
    }
    // 聚合company字段:存在值且未重复则加入
    if (company && !acc[policy].company.includes(company)) {
        acc[policy].company.push(company);
    }
    return acc;
}, {});

console.log(processedResult);

方案2:Lodash实现

const _ = require('lodash');
// 原始输入数据和方案1一致
const rawData = [
    {
        "action": "VIEW",
        "policy": "FORM"
    },
    {
        "action": "CREATE",
        "policy": "USER"
    },
    {
        "action": "VIEW",
        "policy": "USER"
    },
    {
        "company": "Microsoft",
        "policy": "FORM"
    },
    {
        "company": "Facebook",
        "policy": "USER"
    },
    {
        "company": "Twitter",
        "policy": "USER"
    }
];

// 处理逻辑:先按policy分组,再对每个分组做字段聚合去重
const processedResult = _.mapValues(
    _.groupBy(rawData, 'policy'),
    group => ({
        // 提取所有action值,过滤空值后去重
        action: _.uniq(_.compact(group.map(item => item.action))),
        // 提取所有company值,过滤空值后去重
        company: _.uniq(_.compact(group.map(item => item.company)))
    })
);

console.log(processedResult);

两种方案的输出结果均与要求的预期结构完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:54:07