我整天都在堆栈溢出和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);
}
答案 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);