2016-11-22 3 views
-1

私は配列が['Bobby', 'John', 'Sam']、別のものは['Bobby', 'John']です。私は最初の2番目の配列をフィルタリングしたいだけで、残すのはSamです。私はfilterでこれを達成しようとしています。 Array#indexOf方法でJavaScriptの文字列の別の配列から文字列の配列をフィルタリングします(これは重複しません)

+1

重複した質問をしないでください。本当にサイトが劣化します。答えが得られない場合は、注意を引き付けるために賞金またはそれに類するものをつけてください。 – Li357

+0

謝罪の男、少なくともそれは働いた:) – Ryan

+0

賞金のボタンはどこですか?本当にそれを見つけることはできません。 – Ryan

答えて

3

使用Array#filter方法:

var a = ['Bobby', 'John', 'Sam'], 
 
    b = ['Bobby', 'John']; 
 

 
var res = a.filter(function(v) { 
 
    return b.indexOf(v) == -1; 
 
    // or in latest browser 
 
    // return !b.includes(v); 
 
}) 
 

 
console.log(res);

Array#filterが述語であるコールバックを取り、そのコールバックに基づいて配列の要素をフィルタリングするので、これは動作します。コールバックがtrueを返す場合、要素は保持され、それ以外の場合は除外されます。ドキュメントごと:

callback

関数は、配列の各要素をテストするために、述語です。要素を維持するためにtrueを返し、そうでない場合はfalse

上記のスニペットにおいて

vは、アレイ状に処理されている電流値の値を保持します。コードはa配列を通過し、その要素(v)がArray#indexOfと表示された場合にtrueまたはfalseを返します。 Array#indexOf返すので

-1素子vbに存在しないかどうかを確認するために、アレイ内のコールバックチェックを存在しない場合。そうでない場合は、フィルタリングして、結果を得てください。

+2

私は過剰かもしれないいくつかの追加を追加しました。あなたが望むようにロールバックする:^) – Li357