从一系列电子邮件地址中仅获取电子邮件地址域名

时间:2020-08-10 22:17:10

标签: javascript html

enter image description here

我整天都在堆栈溢出和Google上进行搜索,找不到确切的东西。我有从用户那里得到的一系列电子邮件地址。 Ex. [asdfgg@gmail.com, fgtrreds@yahoo.com, dgfit@gmail.com]。我想拆分所有电子邮件地址,然后仅将[@gmail.com, @yahoo.com]等推送到新数组。

这是我整天都在忙的JavaScript函数

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);

}

4 个答案:

答案 0 :(得分:1)

您缺少在[i]之前添加emailNames的方法,就像下面这样

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()

答案 1 :(得分:0)

您只需一行即可完成

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);

答案 2 :(得分:0)

我只给出唯一的域。为此,我用foreach进行迭代,使用substr和indexof获取域(包括@),看看它是否在resultArray中。如果没有把它推到那里。

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));

答案 3 :(得分:0)

由于您不希望在最终列表中出现重复项,因此可以这样做

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);