如何在不进行强制转换的情况下获取数组数组与字符串数组之间的差异数

时间:2016-02-06 22:25:24

标签: javascript arrays casting comparison

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

array1 of numbers: [2,1,2,3,1]
array2 of strings: ["2","2","2","2","1"]

我想在它们之间进行比较并获得差异数量而不会抛出其中一个。例如,在上面的数组中,我希望得到:2(单元格[1]的差异:1与2相比,单元格[3]:3与2相比)

4 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

使用三等于比较元素而不使用自动类型强制

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

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

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

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

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