我正在尝试比较两个数组并显示不匹配的值。
使用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。
答案 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)。