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

如何在对象中提取值相同的键(键异值同场景)

实现方法

先看你给出的目标对象:

const object = {
  "A":["1","choiceONE"],
  "B":["1","choiceTHREE"],
  "C":["1","choiceONE"],
  "D":["1","choiceONE"],
  "E":["1","choiceTWO"],
  "F":["4","choiceONE"],
  "G":["4","choiceTHREE"],
  "H":["4","choiceTHREE"]
};

要把值完全相同的键分组,且只保留成员数≥2的分组,可以按以下步骤实现:

  1. 创建一个临时对象,用来存储每个值对应的键列表
  2. 遍历原对象的所有键值对,把数组类型的值转成字符串(用JSON.stringify)作为临时对象的键,将原对象的键添加到对应数组中
  3. 最后提取临时对象里所有长度≥2的数组,就是目标结果

具体代码:

const groupKeysByValue = (obj) => {
  const groups = {};
  // 遍历原对象的键值对
  for (const [key, value] of Object.entries(obj)) {
    // 把数组转成唯一字符串作为分组标识
    const valueKey = JSON.stringify(value);
    // 初始化分组或追加当前键
    groups[valueKey] = groups[valueKey] ? [...groups[valueKey], key] : [key];
  }
  // 过滤出成员数≥2的分组
  return Object.values(groups).filter(group => group.length >= 2);
};

// 调用函数获取结果
console.log(groupKeysByValue(object));
// 输出:[["A","C","D"], ["G","H"]]

补充说明

数组属于引用类型,直接作为对象键会被统一转成[object Array],无法区分不同数组,所以必须用JSON.stringify把数组转成唯一字符串,确保相同数组能分到同一组;最后过滤掉仅含单个键的分组,就得到你需要的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 06:21:57