写个方法找出两个二维数组的差集

在前端开发中,JavaScript 是最常用的编程语言。以下是一个使用 JavaScript 编写的函数,用于找出两个二维数组的差集:

function arrayDiff(arr1, arr2) {
    // 将二维数组转换为一维数组,并存储每个子数组转换为字符串的形式,方便比较
    const map1 = new Map(arr1.map(item => [item.toString(), item]));
    const map2 = new Set(arr2.map(item => item.toString()));

    // 过滤出只在第一个数组中出现的子数组
    const diff = Array.from(map1.entries())
        .filter(([key]) => !map2.has(key))
        .map(([, value]) => value);

    return diff;
}

// 示例用法
const arr1 = [[1, 2], [3, 4], [5, 6]];
const arr2 = [[3, 4], [7, 8]];
const result = arrayDiff(arr1, arr2);
console.log(result); // 输出: [[1, 2], [5, 6]]

这个函数首先将两个二维数组转换为一维数组,并使用 MapSet 数据结构来存储每个子数组转换为字符串的形式。然后,它过滤出只在第一个数组中出现的子数组,并将结果转换回二维数组的形式。

注意,这个函数假设子数组中的元素顺序是重要的,即 [1, 2][2, 1] 被视为不同的子数组。如果你希望忽略元素顺序,你可以在将子数组转换为字符串之前先对它们进行排序。

另外,这个函数也假设子数组中的元素都是基本类型(如数字、字符串等),而不是对象或复杂类型。如果子数组中包含对象或复杂类型,你可能需要实现更复杂的比较逻辑来确保正确的差集计算。

posted @   王铁柱6  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
点击右上角即可分享
微信分享提示