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

如何检查两个JSON文件中的数组不存在共同元素

检测两个JSON数组是否无共同元素的方法

核心思路

将其中一个数组转换为哈希集合(单元素查询时间复杂度为O(1)),遍历另一个数组的所有元素检查是否存在于集合中。只要找到一个匹配元素即可判定存在共同值,遍历完所有元素都无匹配则判定无共同值。
该方案总时间复杂度为O(n+m)(n、m分别为两个数组的长度),远优于嵌套循环对比的O(n*m)方案,数组元素量越大效率优势越明显。


常用语言实现示例

1. Python(JSON文件处理场景)

import json

def has_no_common_elements(arr1, arr2):
    # 优先将更短的数组转集合,降低内存占用
    if len(arr1) > len(arr2):
        arr1, arr2 = arr2, arr1
    temp_set = set(arr1)
    for elem in arr2:
        if elem in temp_set:
            # 存在共同元素,返回False
            return False
    # 无共同元素,返回True
    return True

# 读取本地JSON文件示例
with open("文件1路径.json", "r", encoding="utf-8") as f:
    arr_1 = json.load(f)
with open("文件2路径.json", "r", encoding="utf-8") as f:
    arr_2 = json.load(f)

if has_no_common_elements(arr_1, arr_2):
    print("两个数组不存在任何共同值")
else:
    print("两个数组存在共同值")

代入你给出的示例数组测试,因为32同时存在于两个数组中,函数会返回False,符合实际情况。

2. JavaScript(Node.js环境)

const fs = require('fs')

function hasNoCommonElements(arr1, arr2) {
    if (arr1.length > arr2.length) {
        [arr1, arr2] = [arr2, arr1]
    }
    const tempSet = new Set(arr1)
    return !arr2.some(elem => tempSet.has(elem))
}

// 读取本地JSON文件示例
const arr1 = JSON.parse(fs.readFileSync('文件1路径.json', 'utf-8'))
const arr2 = JSON.parse(fs.readFileSync('文件2路径.json', 'utf-8'))

const result = hasNoCommonElements(arr1, arr2)
console.log(result ? '两个数组不存在任何共同值' : '两个数组存在共同值')

注意事项

  • 以上方案仅适用于数组元素为数字、字符串、布尔值等可直接哈希对比的基础类型。如果是对象数组,需要先提取要对比的特征字段(比如对象的id属性)生成基础类型集合后再执行判断。
  • 如果数组元素量极小(均小于10个),直接用嵌套循环对比也可满足需求,不需要额外引入集合结构。

内容的提问来源于stack exchange,提问作者Константин Морев

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:45:07