比较两个数组的元素

ham*_*med 5 javascript arrays comparison

我有两个javascript数组,我需要比较它们.例如,假设我有这两个数组:

var array1 = ["1", "2", "3", "4"];
var array2 = ["4", "1", "3", "2"];
Run Code Online (Sandbox Code Playgroud)

这些数组实际上是相同的,我希望得到true比较的结果.这样做的最好和最快的方法是什么?

Vai*_*hav 2

执行此操作的最佳方法和最快方法是使用跟踪其值及其计数的对象。然后我们可以看看它是否存在于第二个数组中。尝试这个

function compare(arr1, arr2){
    var obj={}, len = arr1.length, i=0, isSame=true, prop;
    if(arr1.length === arr2.length){
        for(;i<len;i++){
            if(obj[arr1[i]]){
                obj[arr1[i]] = obj[arr1[i]]+1;
            } else{
                obj[arr1[i]] =1;
            }
        }
        i=0, len = arr2.length;
        for(;i<len;i++){
            if(obj[arr2[i]]){
                obj[arr2[i]] = obj[arr2[i]]-1;
            } else{
                isSame = false;
                break;
            }
        }
        for (prop in obj){
            if(obj[prop] > 0){
                isSame = false;
                break;
            }
        }
    }else{
        isSame = false;
    }
    return isSame;

}
Run Code Online (Sandbox Code Playgroud)