如何从Node JS中的数组中删除某些电子邮件地址

时间:2018-09-24 01:39:26

标签: javascript node.js

我有一个具有以下数组列表的Node Js应用程序,

['test1@gmail.com','test2@gmail.com','test@hotmail.com.com','test@yahoo.com']

并且我想从该数组中删除所有@gmail.com电子邮件地址,并得到一个新的数组。

['test@hotmail.com.com','test@yahoo.com']

我使用了以下方法,但没有得到想要的预期结果

let ccemails =  filterItems('@gmail.com');

我似乎无法弄清楚我在做错什么。

任何帮助将不胜感激。

5 个答案:

答案 0 :(得分:5)

您可以使用Array.prototype.filter()来返回一个新数组,该数组包含符合特定条件的所有元素

let arr = ['test1@gmail.com','test2@gmail.com','test@hotmail.com.com','test@yahoo.com']

var results = arr.filter(function(el){ 
    return !el.match(/.+\@gmail\.com/)
})

console.log(results);

答案 1 :(得分:2)

您可以同时使用endsWithfilter()

let arr = ['test1@gmail.com','test2@gmail.com','test@hotmail.com.com','test@yahoo.com']
// only items that don't end with gmail.com
let filtered = arr.filter(item => !item.toLowerCase().endsWith('gmail.com')) 

console.log(filtered)

答案 2 :(得分:1)

您可以遍历数组并检查每个项目是否包含@gmail.com,例如

let arr = ['test1@gmail.com','test2@gmail.com','test@hotmail.com.com','test@yahoo.com']

let ccemails = [];

arr.forEach((email) => {
    if(!(email.toLowerCase()).includes('@gmail.com')) {
       ccemails.push(email);
    }
}) 

console.log(ccemails);

答案 3 :(得分:1)

使用Array.prototype.forEach()string.prototype.endsWith()的另一种方法

const arr = ['test1@gmail.com','test2@gmail.com','test@hotmail.com.com','test@yahoo.com']

const ccemails = [];
arr.forEach((email) => {if(!(email.endsWith('@gmail.com'))) {ccemails.push(email);}}) 
console.log(ccemails)

答案 4 :(得分:0)

您可以尝试使用.indexOf()在邮件地址字符串中查找gmail.com。例如,此代码示例将不包含gmail.com的代码打印为域:

var mailAddresses = ['user1@hotmail.com','user2@gmail.com','user3@yahoo.com']

mailAddresses.forEach(function(mailAddress) {
    if(mailAddress.trim().toLowerCase().indexOf('@gmail.com') == -1) {
       console.log(mailAddress);
    }
});