Javascript 在Node.js中查找两个数组中匹配字符串的最有效、最优雅的方法

Javascript 在Node.js中查找两个数组中匹配字符串的最有效、最优雅的方法,javascript,arrays,node.js,Javascript,Arrays,Node.js,我有两个字符串数组: var X = ['A', 'B', 'C'], Y = ['B', 'C', 'D']; 我需要创建一个数组Z,这样Z=A∩ B Z = ['B', 'C']; Z包含X和Y中的字符串 我是这样做的: A.forEach(function(i) { B.forEach(function(j) { if (i === j) Z.push(i); }); }); 有什么建议/意见吗?我最好使用以下方法: 这并没有什么神奇之处,您必须遍历元素,如果

我有两个字符串数组:

var X = ['A', 'B', 'C'],
    Y = ['B', 'C', 'D'];
我需要创建一个数组
Z
,这样Z=A∩ B

Z = ['B', 'C'];
Z包含
X
Y
中的字符串

我是这样做的:

A.forEach(function(i) {
  B.forEach(function(j) {
    if (i === j) Z.push(i);
  });
});
有什么建议/意见吗?

我最好使用以下方法:


这并没有什么神奇之处,您必须遍历元素,如果您使用的是任何帮助函数,那么该函数内部也将执行循环。对,使用
.indexOf()
是我最初的方法。问题是,如果数组有两个类似的单词,如“国际”和“国家”“-这两种方法看起来都是匹配的:)不应该这样,因为您混合了两种不同的
indexOf
方法:and。使用
过滤器
代替我的解决方案有什么好处?@martynas我看不出有什么特别的好处。。。两者都应该相当快。也许
filter
方法稍微短一点,更清晰一点。嗯。。。不确定筛选器如何工作,但我的方法可能有冗余操作。
['A', 'B', 'C'].filter(function(c) {
    return ['B', 'C', 'D'].indexOf(c) > -1;
});