5

重複の可能性:
Javascript配列を使用してセットの差を計算するための最速または最も洗練された方法は何ですか?

Javascriptの文字列の2つの配列の違いを返す関数を考案するのに助けが必要です(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 に答える