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

如何高效实现JavaScript对象所有属性两两互不相等的条件判断

优化实现方案

核心逻辑借助Set数据结构的自动去重特性实现:将对象所有属性值提取为数组后转成Set,若Set的长度和原数组长度完全相等,就说明所有属性值两两互不相等。该方案不需要手动编写两两比较语句,不管对象属性数量有多少,判断逻辑都不需要改动。

优化后的代码如下:

var obj = {
    1: linksArray[randomNumber],
    2: linksArray[randomNumber2],
    3: linksArray[randomNumber3]
} 

const valueList = Object.values(obj)
// Set长度与原数组长度相等即所有值唯一
if(new Set(valueList).size === valueList.length) {
    arr.push(...valueList)
    break
}

补充说明:

  • 上述方案适用于属性值为数字、字符串、布尔值等基本类型的场景,如果属性值是对象、数组这类引用类型,由于Set对比引用类型时判断的是内存地址而非实际内容,需要先把值序列化后再做判断,示例如下:
const valueList = Object.values(obj).map(item => JSON.stringify(item))
if(new Set(valueList).size === valueList.length) {
    // 执行业务逻辑
}
  • 你原有代码中的判断存在大量冗余逻辑,比如obj[1]!=obj[2]和obj[2]!=obj[1]完全等价,就算手动写两两比较,N个属性仅需要写N*(N-1)/2次判断即可,不需要写N²次重复判断。

内容的提问来源于stack exchange,提问作者Андрей Романов

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:15:03