简体   繁体   English

从 email 地址数组中仅获取 email 地址域名

[英]Getting only the email addresses domain name from an array of email addresses

在此处输入图像描述

I have searched all day on stack overflow and google and can't find the exact thing I need.我整天都在堆栈溢出和谷歌上搜索,但找不到我需要的确切内容。 I have an array of email addresses i will get from the user.我有一组 email 地址,我将从用户那里获得。 Ex. [asdfgg@gmail.com, fgtrreds@yahoo.com, dgfit@gmail.com] Ex. [asdfgg@gmail.com, fgtrreds@yahoo.com, dgfit@gmail.com] . Ex. [asdfgg@gmail.com, fgtrreds@yahoo.com, dgfit@gmail.com] I am wanting to split all of the email addresses and then push just the [@gmail.com, @yahoo.com] , etc. to a new array.我想拆分所有 email 地址,然后将[@gmail.com, @yahoo.com]等推送到新数组。

Here is a JavaScript function I have been messing with all day这是 JavaScript function 我整天都在搞砸

function EmailFunction() {
var emailNames = [];
var emailDomains = [];

emailNames = $("#emailing").val();

var len = emailNames.length;
for (var i = 0; i < len; i++) {

   var domain = emailNames.split("@").pop();
    emailDomains.push(domain);
}
console.log("Email Domains = " + domain);

console.log("Function Names = " + emailNames);

} }

You were missing to add [i] before the emailNames just do it like the following您缺少在emailNames之前添加[i]的方法,如下所示

 function onlyUnique(value, index, self) { return self.indexOf(value) === index; } function EmailFunction() { var emailNames = []; var emailDomains = []; emailNames = ['asdfgg@gmail.com', 'fgtrreds@yahoo.com', 'dgfit@gmail.com'] var len = emailNames.length; for (var i = 0; i < len; i++) { var domain = emailNames[i].split("@").pop(); emailDomains.push(domain) var unique = emailDomains.filter(onlyUnique); } console.log(unique) } EmailFunction()

You can do it with just one line您只需一行即可完成

 const emailNames = ['asdfgg@gmail.com', 'fgtrreds@yahoo.com', 'dgfit@gmail.com']; const result = Object.keys(emailNames.map(e => e.split("@")[1]).reduce((o, e) => ({...o, [e]: null }), {})); console.log(result);

I give only unique domains as result.结果,我只给出唯一的域。 For this I iterate with foreach, get the domain (inclusive @) with substr and indexof, look if it's in the resultarray.为此,我使用 foreach 进行迭代,使用 substr 和 indexof 获取域(包括 @),查看它是否在 resultarray 中。 If not push it there.如果不推它那里。

 function getDomains(mailings) { let result = []; mailings.forEach(mail => { let domain = mail.substr(mail.indexOf('@')); if (result.indexOf(domain) == -1) result.push(domain); }); return result; } let mailings = ['asdfgg@gmail.com', 'fgtrreds@yahoo.com', 'dgfit@gmail.com']; console.log(getDomains(mailings));

Since you don't want duplicates in the final list, you can do it like this由于您不希望最终列表中出现重复项,因此您可以这样做

const emailNames = ['asdfgg@gmail.com', 'fgtrreds@yahoo.com', 'dgfit@gmail.com'];
car emailDomains = [];

for(let i=0; i < emailNames.length; i++) {
    let domain = emailNames[i].split("@")[1];
    if(emailDomains.imdexOf(domain) == -1) {
        emailDomains.push(domain);
    }
}
console.log(emailDomains);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM