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

如何使用Lodash查找同一对象中数组值忽略顺序的重复属性

实现方案

核心思路是为每个不考虑顺序的数组生成唯一标识,再按标识分组属性名,最后过滤出存在重复的分组即可,和你原本的排序对比思路复杂度一致,但是Lodash实现更简洁易读:

const _ = require('lodash');

const findDuplicatePropGroups = (targetObj) => {
  return _.chain(targetObj)
    // 遍历所有属性,生成[属性名, 排序后数组的唯一标识]的映射
    .map((arr, propName) => [propName, _.sortBy(arr).join(',')])
    // 按唯一标识分组
    .groupBy(item => item[1])
    // 提取所有分组的属性名
    .values()
    .map(group => _.map(group, item => item[0]))
    // 过滤仅保留存在重复的分组(成员数≥2)
    .filter(group => group.length >= 2)
    .value();
};

// 测试用例
const obj = {
  c1: ['a', 'b', 'c'],
  c2: ['a', 'c', 'b'],
  cx: ['a', 'b'],
  c3: ['d'],
  c4: ['d'],
  c5: ['e'],
};

console.log(findDuplicatePropGroups(obj));
// 输出结果:[ [ 'c1', 'c2' ], [ 'c3', 'c4' ] ]

如果你的数组元素是基础类型之外的复杂对象,可以将.join(',')替换为JSON.stringify()即可适配场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:06:01