function compareArrays(arr1, arr2) {
    // 判断数组长度是否相同
    if (arr1.length !== arr2.length) {
        return false;
    }
    // 历数组元素
    for (let i = 0; i < arr1.length; i++) {
        const item1 = arr1[i];
        const item2 = arr2.findIndex(item => isEqual(item, item1));

        // 如果另一个数组中不存在相同的元素,则返回false
        if (item2 === -1) {
            return false;
        }
    }
    return true;
};

function isEqual(item1, item2) {
    // 判断两个元素是否相同
    if (Array.isArray(item1) && Array.isArray(item2)) {
        return compareArrays(item1, item2);
    } else if (Number.isNaN(item1) && Number.isNaN(item2)) {
        return true
    } else if (typeof item1 === 'object' && typeof item2 === 'object') {
        return compareObjects(item1, item2);
    } else {
        return item1 === item2
    }
};

function compareObjects(obj1, obj2) {
    // 判断两个对象是否相同
    const keys1 = Object.keys(obj1);
    const keys2 = Object.keys(obj2);

    if (keys1.length !== keys2.length) {
        return false;
    }

    for (let key of keys1) {
        if (!isEqual(obj1[key], obj2[key])) {
            return false;
        }
    }
    return true;
}
const arr1 = [2, [1, 2], { a: 5, b: 1, c: '1' }, NaN]
const arr2 = [2, [1, 2], NaN, { a: 1, b: 5, c: 1 }, NaN];

console.log(compareArrays(arr1, arr2)); // 输出: false

最后修改:2023 年 11 月 11 日
如果觉得我的文章对你有用,请随意赞赏