如何在JavaScript中检测数组相等?

Dav*_*vid 10 javascript arrays string equality

JavaScript中有两个数组,它们都采用以下格式:

[{'drink':['alcohol', 'soft', 'hot']}, {'fruit':['apple', 'pear']}];
Run Code Online (Sandbox Code Playgroud)

我需要检测两个数组是否相等.如果它们以不同的顺序包含相同的元素,则它们被认为是相等的.我该怎么做?

Rob*_*b W 6

  1. 检查两个阵列的长度
  2. 循环遍历第一个数组,将每个变量与第二个数组进行比较.

如果12两者都相同,则表示数组相等.

比较对象/数组的函数:

通过真正的数组循环可以实现for(var i=0; i<array.length; i++).
遍历这样的对象的属性可以通过for(var i in object).

function recursiveCompare(obj, reference){
    if(obj === reference) return true;
    if(obj.constructor !== reference.constructor) return false;
    if(obj instanceof Array){
         if(obj.length !== reference.length) return false;
         for(var i=0, len=obj.length; i<len; i++){
             if(typeof obj[i] == "object" && typeof reference[j] == "object"){
                 if(!recursiveCompare(obj[i], reference[i])) return false;
             }
             else if(obj[i] !== reference[i]) return false;
         }
    }
    else {
        var objListCounter = 0;
        var refListCounter = 0;
        for(var i in obj){
            objListCounter++;
            if(typeof obj[i] == "object" && typeof reference[i] == "object"){
                if(!recursiveCompare(obj[i], reference[i])) return false;
            }
            else if(obj[i] !== reference[i]) return false;
        }
        for(var i in reference) refListCounter++;
        if(objListCounter !== refListCounter) return false;
    }
    return true; //Every object and array is equal
}
Run Code Online (Sandbox Code Playgroud)

如果您不理解该功能,请随时在评论中请求解释.


Jav*_*ens -1

这回答了你的问题了吗? JavaScript 如何检查两个数组是否相等?

var equal = array1.compareArrays(array2);
Run Code Online (Sandbox Code Playgroud)