循环遍历数组并过滤电子邮件

时间:2017-01-25 18:21:01

标签: javascript arrays loops for-loop

我正在尝试根据用户的电子邮件来过滤数组中的值。

一个例子是,我有一个看起来像的数组:

var myArray = ["nick@hotmail.com","nick@gmail.com","nick@yahoo.com","bob@hotmail.com", "bob@gmail.com", "matt@hotmail.com", "test@hotmail.com", "lay@gmail.com", "file@yahhoo.com", "terry@test.com", "rich@email.com"];

我正在尝试仅推送以下电子邮件地址结尾的值:

  1. * @ hotmail.com
  2. * @ gmail.com
  3. 我想过滤掉所有其他电子邮件地址。因此它只返回地址与上述值匹配的电子邮件地址。

    我提出了以下代码:

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

    我想将所需的值推送到filteredArray。所有其他值如:@ yahhoo.com&amp; @ test.com&amp; @ email.com我不需要。

    我认为我处于起始位置但不知道如何循环并基于字符串的一部分进行过滤。感谢。

3 个答案:

答案 0 :(得分:4)

您可以使用Array.prototype.filter()。它返回一个新数组,其值将导致回调函数返回true。

var myArray = ["nick@hotmail.com","nick@gmail.com","nick@yahoo.com","bob@hotmail.com", "bob@gmail.com", "matt@hotmail.com", "test@hotmail.com", "lay@gmail.com", "file@yahhoo.com", "terry@test.com", "rich@email.com"];

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

console.log(filtered);

答案 1 :(得分:2)

您可以使用带有filter功能的ES6函数includes来实现此目的。

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

答案 2 :(得分:1)

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