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

Angular/TypeScript中检测JSON对象是否存在重复值

检测Angular+TypeScript中JSON对象属性值的重复情况

基础实现(适用于简单类型值)

如果对象属性值是字符串、数字这类简单类型,直接用Object.values配合Set就能快速判断:

hasDuplicateValues(obj: Record<string, any>): boolean {
  const values = Object.values(obj);
  // Set会自动去重,若原数组长度与Set大小不一致则存在重复
  return values.length !== new Set(values).size;
}

示例用法

假设你的controls对象如下:

const controls = {
  field1: 'Region',
  field2: 'Country',
  field3: 'Region',
  field4: 'City'
};

// 调用函数检测,存在重复时返回true
console.log(hasDuplicateValues(controls)); // 输出: true

复杂类型值的适配方案

如果对象属性值是对象、数组这类复杂类型,由于Set是按引用比较的,需要先把值序列化为字符串再判断:

hasDuplicateComplexValues(obj: Record<string, any>): boolean {
  // 将每个值转为JSON字符串,确保相同结构的复杂值被识别为重复
  const serializedValues = Object.values(obj).map(val => JSON.stringify(val));
  return serializedValues.length !== new Set(serializedValues).size;
}

说明

  • 基础实现性能高效,时间复杂度为O(n),适合大多数简单场景
  • 复杂类型适配方案需要注意:如果值包含无法被JSON.stringify序列化的内容(比如函数、Symbol),需要额外处理序列化逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 10:03:21