比较2个数组并显示数组1中不匹配的元素

Adu*_*Rao 2 javascript arrays loops

我有2个数组如下.我想比较两个数组,只提供'check'中不存在于'data'数组中的元素.

var check= ["044", "451"],
data = ["343", "333", "044", "123", "444", "555"];
Run Code Online (Sandbox Code Playgroud)

使用的功能如下.此函数将导致提供'check'数组中的元素,这些元素存在于'data'数组中

function getMatch(a, b) {
var matches = [];

for ( var i = 0; i < a.length; i++ ) {
    for ( var e = 0; e < b.length; e++ ) {
        if ( a[i] === b[e] ) matches.push( a[i] );
    }
}
return matches;
}

getMatch(check, data); // ["044"] ---> this will be the answer as '044' is only present in 'data'
Run Code Online (Sandbox Code Playgroud)

我想要一个"数据"数组中不存在的元素列表.有人能让我知道如何实现这一目标.

tri*_*cot 11

您可以使用filterSet提供方法的Set上下文filter,以便可以访问this:

var check= ["044", "451"],
data = ["343", "333", "044", "123", "444", "555"];

var res = check.filter( function(n) { return !this.has(n) }, new Set(data) );

console.log(res);
Run Code Online (Sandbox Code Playgroud)

请注意,这在O(n)时间内运行,与indexOf/ includesbased解决方案相反,后者实际上代表嵌套循环.