我的对象中有一个电子邮件列表。如:
{
email1: yada@gmail.com,
email2: hada@gmail.com,
email3: hada@gmail.com
}
我想找到重复的电子邮件,计算每个电子邮件的重复值,然后在另一个对象中,显示为每封电子邮件找到的重复电子邮件的数量。
我该怎么做?
答案 0 :(得分:1)
// Input
var input = {
email1: "yada@gmail.com",
email2: "hada@gmail.com",
email3: "hada@gmail.com"
}
var output = {};
for (var key in input) {
output[input[key]] = (output[input[key]] || 0) + 1;
}
for (var key in output) {
if (output[key] > 1) {
console.log(key, output[key]);
}
}

答案 1 :(得分:1)
var input = {
email1: 'yada@gmail.com',
email2: 'hada@gmail.com',
email3: 'hada@gmail.com'
}
// first get a count of each:
var addressCount = Object.keys(input) // get the keys of the object
.map(function(k) { return input[k] }) // map to get an array of the addresses
.reduce(function(acc, email) { // reduce that array using an object
acc[email] = (acc[email] || 0) + 1 // to keep totals for each distinct email
return acc
}, {})
console.log(addressCount)
// then keep the ones with count > 1
var duplicates = Object.keys(addressCount)
.reduce(function(acc, email) {
if (addressCount[email] > 1)
acc[email] = addressCount[email]
return acc
}, {})
console.log(duplicates)

答案 2 :(得分:0)
也许是这样的:
function countEmails(emails) {
return Object
.keys(emails)
.map(email => emails[email])
.reduce((counter, email) => {
return Object.assign({}, counter, {
[email]: counter[email] ? (counter[email] + 1) : 1,
});
}, {});
}
const emails = {
email1: 'asdf@asdf.asdf',
email2: 'asdf@asdf.asdf',
email3: 'qwer@qwer.qwer',
};
console.log(countEmails(emails)); // { 'asdf@asdf.asdf': 2, 'qwer@qwer.qwer': 1 }
答案 3 :(得分:0)
希望此代码段有用
var obj = {
email1: 'yada @gmail.com',
email2: 'hada @gmail.com',
email3: 'hada @gmail.com'
}
var tempArray = []; // An array to track what is not duplicate
var newObj = {} // It is new object without duplicate
for (var keys in obj) {
// check in array if a key value is present
if (tempArray.indexOf(obj[keys]) === -1) {
// if not present add in the array, so next time it wont add again
tempArray.push(obj[keys]);
// in new object create a relevant key and add it's value
newObj[keys] = obj[keys]
}
}
console.log(newObj)
答案 4 :(得分:0)
您可以尝试这样的事情:
counts
中设置具有必要值的值。1
,请将其值设置为dupes
。
var input = {
email1: 'yada@gmail.com',
email2: 'hada@gmail.com',
email3: 'hada@gmail.com'
}
var counts = {};
var dupes = {};
for(var k in input){
var v = input[k];
var count = (counts[v] || 0) + 1;
counts[v] = count;
if(count > 1)
dupes[v] = count
}
console.log(counts, dupes)