我有一个具有以下数组列表的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');
我似乎无法弄清楚我在做错什么。
任何帮助将不胜感激。
答案 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)
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);
}
});