How to compare two arrays in node js?

前端 未结 7 1624
无人及你
无人及你 2021-01-12 07:42

I am having two arrays, how can i compare the two arrays at single shot.

   var arr1= [\"a\",\"b\",\"c\"];
   var arr2 = [\"a\",\"c\",\"d\"]

   if(arr1 == a         


        
7条回答
  •  旧巷少年郎
    2021-01-12 08:11

    var arr1 = ["a","b","c"];
    var arr2 = ["a","c","d"];
    
    if (arr1.length == arr2.length
        && arr1.every(function(u, i) {
            return u === arr2[i];
        })
    ) {
       console.log(true);
    } else {
       console.log(false);
    }
    

    Side note for edge cases:

    === is often considered slightly broken for this kind of task because NaN behaves unexpectedly:

    var arr1 = ["a",NaN,"b"];
    var arr2 = ["a",NaN,"b"];
    
    if (arr1.length == arr2.length
        && arr1.every(function(u, i) {
            return u === arr2[i];
        })
    ) {
       console.log(true);
    } else {
       console.log(false);
    }
    

    The code above actually logs false because NaN !== NaN. In addition, === can't distinguish +0 from -0. To cover both of these cases, you could use a stronger comparison known as "egal" or "is", which can easily be implemented like so:

    function is(a, b) {
        return a === b && (a !== 0 || 1 / a === 1 / b) // false for +0 vs -0
            || a !== a && b !== b; // true for NaN vs NaN
    }
    
    var arr1 = ["a",NaN,"b"];
    var arr2 = ["a",NaN,"b"];
    
    if (arr1.length == arr2.length
        && arr1.every(function(u, i) {
            // Use "is" instead of "==="
            return is(u, arr2[i]);
        })
    ) {
       console.log(true);
    } else {
       console.log(false);
    }
    

提交回复
热议问题