[英]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.