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

标签 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。

最佳答案

您需要切换数组并迭代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);

关于javascript - jQuery 比较数组并显示不匹配的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44834269/

相关文章:

jquery - 如何仅定位 YouTube iframe 网址?

javascript - 如何根据用户将告诉键及其值的子数组的值来过滤此数组

javascript - 防止 Meteor 将脚本包装在立即调用的函数表达式中

javascript - 使用 Angular 动态填充 Head 标签

javascript - Visual Studio 2017 突然不会将新的 JavaScript 文件上传到 Azure

javascript - 如何将一个 svg 形状拖到另一个 svg 中以便保存

javascript - 无法在 Google 跟踪代码管理器中提取数据层变量

javascript - 当一个 div 具有切换类时,如何将类添加到另一个 div?

java - 无法从 START_OBJECT token 中反序列化 int[] 实例

JavaScript:创建一个返回数组频率分布的函数