删除javascript变量中以逗号分隔格式存储的重复电子邮件ID
Remove duplicate email IDs stored in comma separated format in javascript variable
我有一个javascript变量,它存储用户在界面中插入的电子邮件id。
var contacts="test121@example.com,lisd.lia@example.com,hunshua@example.net,test121@example.com"
这个变量中存储了重复的电子邮件ID。如何删除重复的电子邮件并存储每个变量的单个出现?
如果使用下划线或lodash,则:
contacts = _.unique(contacts.split(',')).join(',');
如果没有,则执行以下操作:
var emails = contacts.split(',');
seenEmails = {},
newContacts = [];
for(var i = 0; i < emails.length; i++) {
if(!seenEmails[emails[i]]) {
seenEmails[emails[i]] = true;
newContacts.push(emails[i]);
}
}
contacts = newContacts.join(',');
这将适用于所有没有库的浏览器,而且它比indexOf
更高效。
这里有一个删除重复字符串的简单示例。
var str1 = "saas,asaac,saas,sss,sss,fds";
var characters = str1.split(",");
var distinctCharacters = [];
jQuery.each(characters, function(index, c) {
if (jQuery.inArray(c, distinctCharacters) > -1) {
// do nothing
alert("already exists " + c);
} else {
distinctCharacters.push(c);
}
});
alert(distinctCharacters);
这里有一种暴力的方法,你永远不应该在生产中或大列表中使用,但可以在纯JS中完成任务,而不使用任何库:
var contacts = "test121@example.com,lisd.lia@example.com,hunshua@example.net,test121@example.com";
function uniqueContacts(str){
var contactList = str.split(',');
var newContacts = [];
for(var i = 0; i < contactList.length; i++){
if(newContacts.indexOf(contactList[i]) === -1)
newContacts.push(contactList[i]);
}
return newContacts;
}
uniqueContacts(contacts);
注意:IE 8或更早版本不支持数组的indexOf()方法。如果这是你需要支持的东西,它仍然可以做,只是不同。(见Justin的回答示例)
我给出的函数将返回一个数组;从那里你可以对数据做任何你喜欢的事情,包括使用uniqueContacts(contacts).join(',')
将其转换回CSV
还值得一提的是,如果您只针对支持ECMAScript 5的浏览器,则可以使用Object.keys()
,并避免使用indexOf()方法或在循环浏览时将每个地址存储两次。然而,对这种方法的支持度很低,所以这是不可取的。
这就是我解决问题的方法…
//filter out repeated email ids
if (contacts != "") {
var t = contacts.split(',');
$.unique(t);
contacts=t.join(",");
}
相关文章:
- 设置 HTML 自定义属性与在 ID 属性中存储信息
- 使用 JavaScript 在本地存储中存储多个 ID
- 按 ID 存储关联数据
- 如何将WordPress帖子ID传递到HTML5本地存储
- 在Firebase中存储ID列表
- PHP聊天-在html5中存储id
- 向本地存储中的选定ID发出警报(MySQL响应)
- 使用科尔多瓦在我的网络服务器上存储 GCM ID 不起作用
- 如何在 ID 属性中存储 HTML 标记
- 将 iframe 的 id 存储在 javascript 变量中
- HTML:要存储实体 id 的元素/属性
- 当我在 Dojo 中左键单击树行(树节点)时,如何从对象存储中获取 ID
- 会话节点.js + 护照.js + Redis,按 user.id 存储会话
- 如何从浏览器的 cookie 存储中删除会话 ID
- 在一个页面上多次使用相同的本地存储 ID
- 存储动态创建的对话框的值 (ID)
- 在 Javascript 中创建存储数组,并在每次单击时推送元素 ID
- Javascript Redux - 如何通过 id 从存储中获取元素
- 关于在HTML中存储ID(如Ticket ID、Case ID)的想法
- 可以存储id的标记编辑器