我会尝试解释我需要做什么,为什么解释起来没那么简单。
我有4个电子邮件列表,其中有重复的项目,需要提取这些电子邮件,例如:
list 1:
email1, email2, email4, email5
list 2:
email2, email3, email5, email6
list 3:
email1, email2, email7, email8
list 4:
email2, email4, email6, email7
我需要这个: 结果:
email1 (list1, list3)
email2 (list1, list2, list3, list4)
email3 (list2)
...
我正在尝试使用 JavaScript 来完成此操作,因为实际上这些电子邮件位于 Excel 中..
JSbin: http://jsbin.com/zerexuviya/edit?html,js,console,output
最佳答案
这是我刚刚仅使用 Underscore.js 编写的解决方案:https://jsfiddle.net/alienpavlov/b0zaz5Lw/
var all = {
"list1": [
"email1",
"email2",
"email3",
"email4",
"email5",
"email6"
],
"list2": [
"email2",
"email3",
"email6",
"email7"
],
"list3": [
"email1",
"email3",
"email4",
"email5",
"email6"
],
"list4": [
"email1",
"email3",
"email5",
"email6"
]
};
var listOfAllEmails = _.union.apply(undefined, _.values(all));
_.each(listOfAllEmails, function(email, i) {
var result = [];
_.each(all, function(list, j) {
if (_.indexOf(list, email) > -1) {
result.push(j);
}
});
if (result.length > 1) {
//console.log(email, "=>", result);
var div = document.getElementById("result")
div.innerHTML = div.innerHTML + email + " (" + result + ")<br>";
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
<div id="result"></div>
这都是关于数组排序的。如果您有任何疑问,请随时在评论中提问。
关于javascript - 使用 lodash 下划线比较重复电子邮件列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38312702/