jQuery比较数组并显示不匹配的值

时间:2017-06-29 20:18:14

标签: javascript jquery arrays

我正在尝试比较两个数组并显示不匹配的值。

使用jQuery,我有这个:

$.each(array1, function(key, value)
{
  var index = $.inArray(value, array2);
  if(index != -1)
  {
    console.log(index);
  }
});

使用上面的代码,我可以找到匹配的数组元素。

例如,array1如下所示:

"GESU687543", "TCNU315504", "TGHU394463"

array2看起来像这样:

"TCNU315504", "TRIU805499", "CMAU029901", "GESU687543", "TGHU394463", "NEUL0325B"

但控制台只显示3,0,4,因为这两个数组中都存在这些值。我想做的恰恰相反。我需要找到不匹配的值,并将这些值显示在页面上。

因此,使用上面的示例,应该显示到控制台的值是:

"TRIU805499", "CMAU029901", "NEUL0325B"

修改

SO建议我这个问题可能是重复的:How to get the difference between two arrays in Javascript?

话虽如此,该页面正在使用JavaScript。我在这里严格使用jQuery。

4 个答案:

答案 0 :(得分:2)

您需要切换数组并迭代array2进行过滤,索引为array1

var array1 = ["GESU687543", "TCNU315504", "TGHU394463"],
    array2 = ["TCNU315504", "TRIU805499", "CMAU029901", "GESU687543", "TGHU394463", "NEUL0325B"],
    result = array2.filter(function (a) {
        return array1.indexOf(a) === -1;
    });

console.log(result);

ES6与Array#includes

var array1 = ["GESU687543", "TCNU315504", "TGHU394463"],
    array2 = ["TCNU315504", "TRIU805499", "CMAU029901", "GESU687543", "TGHU394463", "NEUL0325B"],
    result = array2.filter(a => !array1.includes(a));

console.log(result);

答案 1 :(得分:1)

var array3;
for(var i=0, l=array1.length; i<l;i++){
    for(var j=0, k=array2.length; j<k; j++){
         if(array1[i] != array[2]){
            aray3.push(array[i]);
         }
    }
}

答案 2 :(得分:0)

你应该迭代array2,而不是array1。

示例:

var array1 = ["GESU687543", "TCNU315504", "TGHU394463"];
var array2 = ["TCNU315504", "TRIU805499", "CMAU029901", "GESU687543", "TGHU394463", "NEUL0325B"];

array2.forEach(value => array1.indexOf(value) === -1 && console.log(value));

答案 3 :(得分:-1)

那你为什么不把if(index!= -1)改为if(index === -1)。