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

如何高效从对象组合数组中为每个条目筛选保留唯一组合

实现方案

核心思路

同一组的6种排列组合,本质是key与value的映射关系变化,所有value的集合完全一致。我们可以为每个组合生成与排列无关的唯一组标识,通过标识去重即可实现每个条目仅保留1个组合。

实现步骤

  • 遍历数组中的每个组合对象
  • 提取对象的所有value,按字典序排序后拼接为唯一组标识(使用分隔符避免不同值拼接产生歧义)
  • 用Set缓存已出现的组标识,仅保留首次出现的对应组合

代码实现(JavaScript)

function filterUniqueCombinations(arr) {
  const visitedGroups = new Set();
  const filteredResult = [];

  for (const combination of arr) {
    // 生成组唯一标识,用|分隔避免值拼接歧义
    const groupKey = Object.values(combination).sort().join('|');
    // 若值包含特殊字符可换用JSON.stringify,完全避免歧义:
    // const groupKey = JSON.stringify(Object.values(combination).sort());
    if (!visitedGroups.has(groupKey)) {
      visitedGroups.add(groupKey);
      filteredResult.push(combination);
    }
  }

  return filteredResult;
}

性能说明

该方案时间复杂度为O(n),n为数组总长度(最多6000条),空间复杂度为O(m),m为条目总数(最多1000条),处理耗时在毫秒级,完全满足性能要求。即使后续数据量级扩大10倍,也能保持高效运行。

内容的提问来源于stack exchange,提问作者s.khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:06:04