如何在不强制转换的情况下获得两种类型数组之间的差异数

How can I get the number of differences between two types of array without casting

我有两种长度相同的数组:

array1: [2,1,2,3,1]
array2: ["2","2","2","2","1"]

我想比较它们并在不转换的情况下获得差异的数量。例如,对于上面的数组,我期望得到输出:2

您可以创建一个 for 循环,将 array2 中的字符串转换为整数并将它们存储在 array3 中。然后轻松地将 array3 与 array1 进行比较。或者只是在 for 循环内进行比较 - 无需创建第三个数组。

使用三重相等来比较没有自动类型强制的元素

function compareArrays(a1, a2){
    var diff = 0;
    a1.forEach(function(v,i) {  
        if(v !== a2[i]){
            diff++;
        }
    });
    return diff;
}



var array1 = [2,1,2,3,1];
var array2 =  ["2","2","2","2","1"]

compareArrays(array1, array2); //return 5

此函数return数组之间不同的元素数。

  function compareArrays(x,y){
       var diff = 0;
       x.forEach((elem,index)=>{
             if(y[index]!=elem){
                 diff++;
             }
      });
      return diff;
   }

我在 y[index]==elem 中使用 == 因此 1=='1' 为真。

JavaScript 中的一个众所周知的技巧,用于比较整数数组或整数字符串(如您的示例)

var ll=["12","45","78"];
var l=[12,45,78];

document.write(l.join(',')==ll.join(','));