Я хотел сгруппировать по массиву объектов с несколькими полями, и я сделал это, и я хотел объединить письмо сначала в отношении reportName, а затем в отношении конкретных событий, я выполнил эту часть, но когда я Делая это в полях, я получаю это неопределенным с ними, я хочу удалить это неопределенное и распечатать только строки электронной почты.
var data = [ { office: 'abc',
reportName: 'footprints',
email: 'abc45@gmail.com',
event: 'delivered' },
{ office: 'abc',
reportName: 'footprints',
email: 'abcd55@gmail.com',
event: 'delivered' },
{ office: 'abc',
reportName: 'footprints',
email: 'addfs45@gmail.com',
event: 'delivered' },
{ office: 'abc',
reportName: 'footprints',
email: 'singh45@gmail.com',
event: 'delivered' },
{ office: 'abc',
reportName: 'footprints',
email: 'abcdg45@gmail.com',
event: 'delivered' },
{ office: 'abc',
reportName: 'payroll',
email: 'xyz@gmail.com',
event: 'delivered' },
{ office: 'abc',
reportName: 'footprints',
email: 'ggrr@gmail.com',
event: 'delivered' },
{ office: 'abc',
reportName: 'payroll',
email: 'ggrr@gmail.com',
event: 'delivered' },
{ office: 'abc',
reportName: 'payroll',
email: 'singh45@gmail.com',
event: 'delivered' },
{ office: 'abc',
reportName: 'footprints',
email: 'abcd55@gmail.com',
event: 'open' },
{ office: 'abc',
reportName: 'payroll',
email: 'abc45@gmail.com',
event: 'delivered' },
{ office: 'abc',
reportName: 'payroll',
email: 'addfs45@gmail.com',
event: 'delivered' },
{ office: 'abc',
reportName: 'payroll',
email: 'abcdg45@gmail.com',
event: 'delivered' },
{ office: 'abc',
reportName: 'footprints',
email: 'abc45@gmail.com',
event: 'open' },
{ office: 'abc',
reportName: 'payroll',
email: 'ggrr@gmail.com',
event: 'processed' },
{ office: 'abc',
reportName: 'payroll',
email: 'abc45@gmail.com',
event: 'open' },
{ office: 'abc',
reportName: 'payroll',
email: 'hfhhfg@gmail.com',
event: 'delivered' },
{ office: 'abc',
reportName: 'payroll',
email: 'abc45@gmail.com',
event: 'open' },
{ office: 'abc',
reportName: 'footprints',
email: 'ggrr@gmail.com',
event: 'processed' },
{ office: 'abc',
reportName: 'footprints',
email: 'abcd55@gmail.com',
event: 'open' },
{ office: 'abc',
reportName: 'footprints',
email: 'singh45@gmail.com',
event: 'processed' },
{ office: 'abc',
reportName: 'payroll',
email: 'abcd55@gmail.com',
event: 'delivered' },
{ office: 'abc',
reportName: 'footprints',
email: 'abc45@gmail.com',
event: 'processed' },
{ office: 'abc',
reportName: 'payroll',
email: 'xyz@gmail.com',
event: 'processed' },
{ office: 'abc',
reportName: 'payroll',
email: 'abcd55@gmail.com',
event: 'processed' },
{ office: 'abc',
reportName: 'footprints',
email: 'abcd55@gmail.com',
event: 'processed' },
{ office: 'abc',
reportName: 'payroll',
email: 'abc45@gmail.com',
event: 'processed' },
{ office: 'abc',
reportName: 'footprints',
email: 'hfhhfg@gmail.com',
event: 'processed' },
{ office: 'abc',
reportName: 'footprints',
email: 'abcdg45@gmail.com',
event: 'processed' },
{ office: 'abc',
reportName: 'payroll',
email: 'singh45@gmail.com',
event: 'processed' },
{ office: 'abc',
reportName: 'footprints',
email: 'addfs45@gmail.com',
event: 'processed' },
{ office: 'abc',
reportName: 'payroll',
email: 'hfhhfg@gmail.com',
event: 'processed' },
{ office: 'abc',
reportName: 'footprints',
email: 'hfhhfg@gmail.com',
event: 'delivered' },
{ office: 'abc',
reportName: 'payroll',
email: 'addfs45@gmail.com',
event: 'processed' },
{ office: 'def',
reportName: 'footprints',
email: 'jjj@gmail.com',
event: 'processed' },
{ office: 'def',
reportName: 'footprints',
email: 'jjj@gmail.com',
event: 'delivered' },
{ office: 'def',
reportName: 'footprints',
email: 'xyz@gmail.com',
event: 'processed' },
{ office: 'def',
reportName: 'payroll',
email: 'abcdg45@gmail.com',
event: 'delivered' },
{ office: 'def',
reportName: 'footprints',
email: 'singh45@gmail.com',
event: 'delivered' },
{ office: 'def',
reportName: 'payroll',
email: 'jjj@gmail.com',
event: 'delivered' },
{ office: 'def',
reportName: 'footprints',
email: 'abcdg45@gmail.com',
event: 'processed' },
{ office: 'def',
reportName: 'footprints',
email: 'abcdg45@gmail.com',
event: 'delivered' },
{ office: 'def',
reportName: 'payroll',
email: 'jjj@gmail.com',
event: 'open' },
{ office: 'def',
reportName: 'footprints',
email: 'singh45@gmail.com',
event: 'processed' },
{ office: 'ghi',
reportName: 'payroll',
email: 'hfghf@gmail.com',
event: 'delivered' },
{ office: 'ghi',
reportName: 'footprints',
email: 'singh45@gmail.com',
event: 'delivered' },
{ office: 'ghi',
reportName: 'footprints',
email: 'xyz@gmail.com',
event: 'delivered' },
{ office: 'ghi',
reportName: 'payroll',
email: 'ghthh@gmail.com',
event: 'delivered' },
{ office: 'ghi',
reportName: 'payroll',
email: 'abcdg45@gmail.com',
event: 'delivered' },
{ office: 'ghi',
reportName: 'footprints',
email: 'hfgjg@gmail.com',
event: 'open' },
{ office: 'ghi',
reportName: 'payroll',
email: 'hdgdfhf333@gmail.com',
event: 'delivered' },
{ office: 'ghi',
reportName: 'payroll',
email: 'hdgshgfhg@gmail.com',
event: 'delivered' },
{ office: 'ghi',
reportName: 'payroll',
email: 'hhhhhhrt45@gmail.com',
event: 'delivered' },
{ office: 'ghi',
reportName: 'payroll',
email: 'hdghdghhh@gmail.com',
event: 'delivered' },
{ office: 'ghi',
reportName: 'payroll',
email: 'hfgjg@gmail.com',
event: 'open' },
{ office: 'ghi',
reportName: 'footprints',
email: 'abcdg45@gmail.com',
event: 'delivered' },
{ office: 'ghi',
reportName: 'footprints',
email: 'jjhhh@gmail.com',
event: 'processed' },
{ office: 'ghi',
reportName: 'payroll',
email: 'hdhdhcgsfhgf@gmail.com',
event: 'delivered' },
{ office: 'ghi',
reportName: 'footprints',
email: 'ggrr@gmail.com',
event: 'processed' },
{ office: 'ghi',
reportName: 'payroll',
email: 'hfgjg@gmail.com',
event: 'delivered' },
{ office: 'ghi',
reportName: 'footprints',
email: 'hfghf@gmail.com',
event: 'processed' },
{ office: 'ghi',
reportName: 'footprints',
email: 'vipin@indinnovation.com',
event: 'processed' },
{ office: 'ghi',
reportName: 'payroll',
email: 'ggrr@gmail.com',
event: 'open' },
{ office: 'ghi',
reportName: 'footprints',
email: 'hdhdhcgsfhgf@gmail.com',
event: 'processed' },
{ office: 'ghi',
reportName: 'footprints',
email: 'hdgshgfhg@gmail.com',
event: 'processed' },
{ office: 'ghi',
reportName: 'footprints',
email: 'ghthh@gmail.com',
event: 'delivered' },
{ office: 'ghi',
reportName: 'footprints',
email: 'xyz@gmail.com',
event: 'processed' },
{ office: 'ghi',
reportName: 'footprints',
email: 'hfghf@gmail.com',
event: 'delivered' },
{ office: 'ghi',
reportName: 'payroll',
email: 'ggrr@gmail.com',
event: 'delivered' },
{ office: 'ghi',
reportName: 'footprints',
email: 'hhhhhhrt45@gmail.com',
event: 'delivered' },
{ office: 'ghi',
reportName: 'footprints',
email: 'ghthh@gmail.com',
event: 'processed' },
{ office: 'ghi',
reportName: 'footprints',
email: 'hfgjg@gmail.com',
event: 'delivered' },
{ office: 'ghi',
reportName: 'footprints',
email: 'singh45@gmail.com',
event: 'processed' },
{ office: 'ghi',
reportName: 'footprints',
email: 'vipin@indinnovation.com',
event: 'delivered' },
{ office: 'ghi',
reportName: 'footprints',
email: 'hdgdfhf333@gmail.com',
event: 'processed' },
{ office: 'ghi',
reportName: 'footprints',
email: 'hdghdghhh@gmail.com',
event: 'delivered' },
{ office: 'ghi',
reportName: 'payroll',
email: 'jjhhh@gmail.com',
event: 'delivered' },
{ office: 'ghi',
reportName: 'footprints',
email: 'jjhhh@gmail.com',
event: 'delivered' },
{ office: 'ghi',
reportName: 'footprints',
email: 'hfgjg@gmail.com',
event: 'processed' },
{ office: 'ghi',
reportName: 'footprints',
email: 'hdgshgfhg@gmail.com',
event: 'delivered' },
{ office: 'ghi',
reportName: 'footprints',
email: 'hhhhhhrt45@gmail.com',
event: 'processed' },
{ office: 'ghi',
reportName: 'footprints',
email: 'hdgdfhf333@gmail.com',
event: 'delivered' },
{ office: 'ghi',
reportName: 'payroll',
email: 'xyz@gmail.com',
event: 'delivered' },
{ office: 'ghi',
reportName: 'footprints',
email: 'hdhdhcgsfhgf@gmail.com',
event: 'delivered' },
{ office: 'ghi',
reportName: 'footprints',
email: 'hdghdghhh@gmail.com',
event: 'processed' },
{ office: 'ghi',
reportName: 'footprints',
email: 'vipin@indinnovation.com',
event: 'open' },
{ office: 'ghi',
reportName: 'footprints',
email: 'abcdg45@gmail.com',
event: 'processed' },
{ office: 'ghi',
reportName: 'footprints',
email: 'ggrr@gmail.com',
event: 'delivered' },
{ office: 'ghi',
reportName: 'payroll',
email: 'singh45@gmail.com',
event: 'delivered' },
{ office: 'hhhfgfg',
reportName: 'footprints',
email: 'anami@thotslab.com',
event: 'open' },
{ office: 'hhhfgfg',
reportName: 'footprints',
email: 'abcdg45@gmail.com',
event: 'processed' },
{ office: 'hhhfgfg',
reportName: 'footprints',
email: 'xyz@gmail.com',
event: 'delivered' },
{ office: 'hhhfgfg',
reportName: 'footprints',
email: 'xyz@gmail.com',
event: 'processed' },
{ office: 'hhhfgfg',
reportName: 'footprints',
email: 'singh45@gmail.com',
event: 'processed' },
{ office: 'hhhfgfg',
reportName: 'footprints',
email: 'singh45@gmail.com',
event: 'delivered' },
{ office: 'hhhfgfg',
reportName: 'footprints',
email: 'abcdg45@gmail.com',
event: 'delivered' },
{ office: 'hhhfgfg',
reportName: 'footprints',
email: 'hgdfchgf@gmail.com',
event: 'processed' },
]
Я пытался решить эту проблему, используя этот способ
const processArray = data.filter(itms => {
return itms.event == 'processed';
});
const openEvent = data.filter(itms => {
return itms.event == 'open';
});
const recieved = data.filter(itms => {
return itms.event == 'delivered';
});
//console.log(processArray)
const processEmailRecord = processArray.map(arrayofObj => ({
processEmail: arrayofObj.email,
office: arrayofObj.office,
reportName: arrayofObj.reportName,
}));
const openEmailRecord = openEvent.map(arrayofObj => ({
openEmail: arrayofObj.email,
office: arrayofObj.office,
reportName: arrayofObj.reportName,
}));
const recEmailRecord = recieved.map(arrayofObj => ({
recEmail: arrayofObj.email,
office: arrayofObj.office,
reportName: arrayofObj.reportName,
}));
const eventwiseArray = [...processEmailRecord, ...recEmailRecord, ...openEmailRecord];
let hash1 = Object.create(null);
let eventArray = [];
eventwiseArray.forEach(o => {
var key = ['office', 'reportName']
.map(function(k) {
return o[k];
})
.join('|');
if (!hash1[key]) {
hash1[key] = {office: o.office, reportName: o.reportName,email:' ',processEmail:'',recEmail:'',openEmail:''};
eventArray.push(hash1[key]);
}
['email'].forEach(k => {
if (hash1[key] && !hash1[key][k].includes(o[k])) {
hash1[key][k] += o[k] + ',';
}
});
['processEmail'].forEach(k => {
if (hash1[key] && !hash1[key][k].includes(o[k])) {
hash1[key][k] += o[k] + ',';
}
});
['recEmail'].forEach(k => {
if (hash1[key] && !hash1[key][k].includes(o[k])) {
hash1[key][k] += o[k] + ',';
}
});
['openEmail'].forEach(k => {
if (hash1[key] && !hash1[key][k].includes(o[k])) {
hash1[key][k] += o[k] + ',';
}
});
});
Я получаю вывод таким образом
[ { office: 'abc',
reportName: 'payroll',
email: ' undefined,xyz@gmail.com,ggrr@gmail.com,singh45@gmail.com,abc45@gmail.com,addfs45@gmail.com,abcdg45@gmail.com,hfhhfg@gmail.com,abcd55@gmail.com,',
processEmail: 'ggrr@gmail.com,xyz@gmail.com,abcd55@gmail.com,abc45@gmail.com,singh45@gmail.com,hfhhfg@gmail.com,addfs45@gmail.com,undefined,',
recEmail: 'undefined,xyz@gmail.com,ggrr@gmail.com,singh45@gmail.com,abc45@gmail.com,addfs45@gmail.com,abcdg45@gmail.com,hfhhfg@gmail.com,abcd55@gmail.com,',
openEmail: 'undefined,abc45@gmail.com,' },
{ office: 'abc',
reportName: 'footprints',
email: ' undefined,abc45@gmail.com,abcd55@gmail.com,addfs45@gmail.com,singh45@gmail.com,abcdg45@gmail.com,ggrr@gmail.com,hfhhfg@gmail.com,',
processEmail: 'ggrr@gmail.com,singh45@gmail.com,abc45@gmail.com,abcd55@gmail.com,hfhhfg@gmail.com,abcdg45@gmail.com,addfs45@gmail.com,undefined,',
recEmail: 'undefined,abc45@gmail.com,abcd55@gmail.com,addfs45@gmail.com,singh45@gmail.com,abcdg45@gmail.com,ggrr@gmail.com,hfhhfg@gmail.com,',
openEmail: 'undefined,abcd55@gmail.com,abc45@gmail.com,' },
{ office: 'def',
reportName: 'footprints',
email: ' undefined,jjj@gmail.com,xyz@gmail.com,singh45@gmail.com,abcdg45@gmail.com,',
processEmail: 'jjj@gmail.com,xyz@gmail.com,abcdg45@gmail.com,singh45@gmail.com,undefined,',
recEmail: 'undefined,jjj@gmail.com,singh45@gmail.com,abcdg45@gmail.com,',
openEmail: 'undefined,' },
{ office: 'ghi',
reportName: 'footprints',
email: ' undefined,singh45@gmail.com,xyz@gmail.com,hfgjg@gmail.com,abcdg45@gmail.com,jjhhh@gmail.com,ggrr@gmail.com,hfghf@gmail.com,vipin@indinnovation.com,hdhdhcgsfhgf@gmail.com,hdgshgfhg@gmail.com,ghthh@gmail.com,hhhhhhrt45@gmail.com,hdgdfhf333@gmail.com,hdghdghhh@gmail.com,',
processEmail: 'jjhhh@gmail.com,ggrr@gmail.com,hfghf@gmail.com,vipin@indinnovation.com,hdhdhcgsfhgf@gmail.com,hdgshgfhg@gmail.com,xyz@gmail.com,ghthh@gmail.com,singh45@gmail.com,hdgdfhf333@gmail.com,hfgjg@gmail.com,hhhhhhrt45@gmail.com,hdghdghhh@gmail.com,abcdg45@gmail.com,undefined,',
recEmail: 'undefined,singh45@gmail.com,xyz@gmail.com,abcdg45@gmail.com,ghthh@gmail.com,hfghf@gmail.com,hhhhhhrt45@gmail.com,hfgjg@gmail.com,vipin@indinnovation.com,hdghdghhh@gmail.com,jjhhh@gmail.com,hdgshgfhg@gmail.com,hdgdfhf333@gmail.com,hdhdhcgsfhgf@gmail.com,ggrr@gmail.com,',
openEmail: 'undefined,hfgjg@gmail.com,vipin@indinnovation.com,' },
{ office: 'hhhfgfg',
reportName: 'footprints',
email: ' undefined,anami@thotslab.com,abcdg45@gmail.com,xyz@gmail.com,singh45@gmail.com,hgdfchgf@gmail.com,',
processEmail: 'abcdg45@gmail.com,xyz@gmail.com,singh45@gmail.com,hgdfchgf@gmail.com,undefined,',
recEmail: 'undefined,xyz@gmail.com,singh45@gmail.com,abcdg45@gmail.com,',
openEmail: 'undefined,anami@thotslab.com,' },
{ office: 'def',
reportName: 'payroll',
email: ' undefined,abcdg45@gmail.com,jjj@gmail.com,',
processEmail: 'undefined,',
recEmail: 'abcdg45@gmail.com,jjj@gmail.com,undefined,',
openEmail: 'undefined,jjj@gmail.com,' },
{ office: 'ghi',
reportName: 'payroll',
email: ' undefined,hfghf@gmail.com,ghthh@gmail.com,abcdg45@gmail.com,hdgdfhf333@gmail.com,hdgshgfhg@gmail.com,hhhhhhrt45@gmail.com,hdghdghhh@gmail.com,hfgjg@gmail.com,hdhdhcgsfhgf@gmail.com,ggrr@gmail.com,jjhhh@gmail.com,xyz@gmail.com,singh45@gmail.com,',
processEmail: 'undefined,',
recEmail: 'hfghf@gmail.com,ghthh@gmail.com,abcdg45@gmail.com,hdgdfhf333@gmail.com,hdgshgfhg@gmail.com,hhhhhhrt45@gmail.com,hdghdghhh@gmail.com,hdhdhcgsfhgf@gmail.com,hfgjg@gmail.com,ggrr@gmail.com,jjhhh@gmail.com,xyz@gmail.com,singh45@gmail.com,undefined,',
openEmail: 'undefined,hfgjg@gmail.com,ggrr@gmail.com,' } ]
, но я хотел получить вывод, не указав неопределенное значение перед ним. Все письма в нем должны быть уникальными, как вывод моего решения.