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

如何创建去重重组数组:以DetailValue为键聚合DetailName

问题解决:基于DetailValue去重并聚合DetailName

需求

在不修改原数组的前提下,对每个元素的Details数组做以下处理:

  • 按DetailValue去重
  • 将同一DetailValue对应的DetailName聚合为数组并排序
  • 生成以DetailValue为键、聚合排序后的数组为值的新结构

原数组示例

let arr = [
    {
        Name: 'Name 1',
        Details: [
            { DetailName: 'detail 1', DetailValue: 101 },
            { DetailName: 'detail 2', DetailValue: 101 },
            { DetailName: 'detail 3', DetailValue: 250 }
        ]
    },
    // 其他Name & Details...
];

期望输出要求

  • 去除DetailValue的重复值
  • 所有DetailName排序后存入数组
  • 以去重后的DetailValue为键,对应值为聚合排序后的DetailName数组

期望输出结构

[
    {
        Name: 'Name 1',
        Details: [
            { 
                101: ['detail 1','detail 2'],
                250: ['detail 3']
            }
        ]
    },
    // 其他Name & Details...
]

尝试的代码

用户已实现提取去重后的DetailValue,但无法聚合DetailName:

for(let i = 0; i < arr.length; i++){
    let deita = arr[i].Details
    let removeDupsOfDetailValue = Object.keys(deita.reduce((r,{Length}) => (r[Length]=Length, r) , {}))
    console.log(removeDupsOfDetailValue)
}

解决方案

通过map和reduce组合实现需求,全程不修改原数组:

// 生成目标结果数组,原数组保持不变
const processedArr = arr.map(item => {
    // 构建DetailValue到DetailName数组的映射
    const aggregatedDetails = item.Details.reduce((acc, detail) => {
        const val = detail.DetailValue;
        // 初始化空数组(若键不存在)
        if (!acc[val]) {
            acc[val] = [];
        }
        // 添加当前DetailName到对应数组
        acc[val].push(detail.DetailName);
        return acc;
    }, {});

    // 对每个DetailName数组进行排序
    Object.keys(aggregatedDetails).forEach(key => {
        aggregatedDetails[key].sort();
    });

    // 返回新对象,保留原Name,替换Details为目标结构
    return {
        ...item,
        Details: [aggregatedDetails]
    };
});

console.log(processedArr);

代码说明

  1. 使用map遍历原数组,每个元素生成新对象,避免修改原数据
  2. 通过reduce聚合同一DetailValue的DetailName,利用对象键的唯一性自动去重
  3. 遍历映射的所有键,对每个DetailName数组执行排序
  4. 最终将聚合后的映射放入Details数组,符合期望的输出结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 21:22:37