5

可能重复:
使用 Javascript 数组计算集合差异的最快或最优雅的方法是什么?

我需要帮助设计一个函数,该函数将返回 Javascript 中两个字符串数组之间的差异(jQuery 也是可以接受的)。

我基本上是在寻找一个计算数组 A减去B的函数。

所以如果我们有以下“

A = ['伊斯坦布尔', '香港', '柏林'];
B = ['柏林', '波恩'];

调用diff = minus(A,B)结果应diff填充以下值['Istanbul', 'Hong Kong']

我不想使用像JS Set.

请帮忙提出建议...

4

3 回答 3

22
function diff(A, B) {
    return A.filter(function (a) {
        return B.indexOf(a) == -1;
    });
}
于 2012-07-28T20:48:21.943 回答
6

最快的可能是常规循环

var A = ['Istanbul', 'Hong Kong', 'Berlin'],
    B = ['Berlin', 'Bonn'],
    C = [];

for (var i=A.length; i--;) {
   if (B.indexOf(A[i]) === -1) 
       C.push(A[i]);
}

console.log(C);

最优雅的是基于意见的,但类似

var A = ['Istanbul', 'Hong Kong', 'Berlin'],
    B = ['Berlin', 'Bonn'];

var C = A.filter(x => !B.includes(x));

console.log(C);

于 2012-07-28T20:47:30.200 回答
3

这里:

var minus = function ( a, b ) {
    return a.filter(function ( name ) {
        return b.indexOf( name ) === -1;
    });
};

现场演示:http: //jsfiddle.net/SjF9p/

于 2012-07-28T20:49:30.240 回答