2017-01-25 6 views
0

ユーザーの電子メールの内容に応じて配列から値をフィルター処理しようとしています。ループスルー配列とフィルター電子メ​​ール

  1. *@hotmail.com:私は次のメールアドレスで終わるだけの値をプッシュしようとしています

    var myArray = ["[email protected]","[email protected]","[email protected]","[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]"]; 
    

    例がある

    、私はのように見えるの配列を持っています

  2. *@gmail.com

私は、他のすべての電子メールアドレスをフィルタリングしたいと思います。したがって、アドレスが上記の値と一致する電子メールアドレスのみが返されます。

私は次のコードが出ている:私はfilteredArrayに所望の値をプッシュしたい

var filteredArray = []; 

for (var i = 0, l = myJson.length; i < l; i++) { 
    /// Don't know what to put here! 
    filteredArray.push(); 
} 

。他のすべての値は以下のようになります:@ yahhoo.com & @ test.com & @ email.com私は必要ありません。

私は開始位置にいると思いますが、ループスルーして文字列の一部に基づいてフィルタリングする方法はわかりません。ありがとう。

+1

あの...アレイは[ 'filter'(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)機能を有しています.. –

+0

[JavaScriptで、サブストリングの一致を検索するにはどうすればよいですか?](http://stackoverflow.com/questions/4556099/in-javascript-how-do-you-search-an-array-for -a-substring-match) –

+0

たぶん、regex: 'if(/ @(hot | g)mail [。] com $ /。test(myJson [i]))' –

答えて

4

Array.prototype.filter()を使用できます。これは、コールバック関数がtrueを返すような値を持つ新しい配列を返します。

var myArray = ["[email protected]","[email protected]","[email protected]","[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]"]; 
 

 
var filtered = myArray.filter(function(email) { 
 
    return email.endsWith('@hotmail.com') || email.endsWith('@gmail.com'); 
 
}); 
 

 
console.log(filtered);

+2

注目すべきは、 'string.endsWith最新のブラウザとのみ互換性があります。あなたは 'string.lastIndexOf()'を使ってより大きな互換性で同じことをすることができます。 – Soviut

1
var filteredArray = myArray.filter(function(element) { 
    return element.endsWith('@hotmail.com') || element.endsWith('@gmail.com'); 
}); 
2

あなたはこれを達成するためにfilter機能をES6機能includesを使用することができます。

let fitleredEmails = myJson.filter(index => index.includes("@gmail.com") || index.includes("@hotmail.com")); 
+0

ありがとう!これを元に戻す方法はありますか?それを含めるのではなく、**値を含めません。私はこれを試しました: 'myJson.filter(index =>!index.includes(" @ gmail.com ")' これは何も返しません...万が一何か考えましたか? – user3180997

関連する問題