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

在前端开发中,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 @ 2024-12-25 09:51  王铁柱6  阅读(16)  评论(0)    收藏  举报