判断两个数组是否相等(不考虑顺序)

1,428 阅读1分钟
function compare(arr1, arr2) {
    //临时数组,用于对比删除项
    let tempArr = [...arr2]
    if (arr1 instanceof Array && arr2 instanceof Array) {
        return arr1.length == arr2.length && arr1.every((item_1) => {
            //临时数组需要删除的索引
            let delIndex = 0
            //是否对比成功
            let result = false
            if (isNaN(item_1)) {
                result = tempArr.some((item_2, index) => {
                    if (isNaN(item_2)) {
                        delIndex = index
                        return true
                    }
                    return false
                })
            } else {
                delIndex = tempArr.indexOf(item_1)
                result = delIndex != -1
            }
            tempArr.splice(delIndex, 1)
            return result
        })
    } else {
        return false
    }
}


var obj = {};
var arr = [];
var nan = NaN;

var a = [1, 2, 3, obj, arr, nan];
var b = [obj, arr, 3, 2, 1, nan];

console.log(compare(a, b));