js比较两个数组内容是否相等的方案

1. 深度相等比较

如果你想要比较两个数组的内容是否相同,包括数组中的嵌套数组或对象等元素,你可以使用深度相等比较方法,比如递归或使用第三方库:

递归方式:

function arraysAreEqual(arr1, arr2) {
    if (arr1.length !== arr2.length) {
        return false;
    }

    for (let i = 0; i < arr1.length; i++) {
        if (Array.isArray(arr1[i]) && Array.isArray(arr2[i])) {
            if (!arraysAreEqual(arr1[i], arr2[i])) {
                return false;
            }
        } else if (arr1[i] !== arr2[i]) {
            return false;
        }
    }

    return true;
}

测试数据:

const array1 = [1, 'apple', [3, 4]];
const array2 = [1, 'apple', [3, '4']];

console.log(arraysAreEqual(array1, array2)); // false

使用第三方库

使用第三方库,如lodash中的isEqual方法:

const _ = require('lodash');

const array1 = [1, 2, [3, 4]];
const array2 = [1, 2, [3, 4]];

console.log(_.isEqual(array1, array2)); // true

2. 简单相等比较

如果你只关心两个数组是否具有相同的元素,而不关心元素的顺序,你可以对数组进行排序,然后逐个比较元素:

function arraysAreEqual(arr1, arr2) {
    if (arr1.length !== arr2.length) {
        return false;
    }

    const sortedArr1 = arr1.slice().sort();
    const sortedArr2 = arr2.slice().sort();

    for (let i = 0; i < sortedArr1.length; i++) {
        if (sortedArr1[i] !== sortedArr2[i]) {
            return false;
        }
    }

    return true;
}

const array1 = [1, 2, 3, 4];
const array2 = [4, 3, 2, 1];

console.log(arraysAreEqual(array1, array2)); // true

 

posted @   上官靖宇  阅读(1660)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示