So I have this array:
[{date: "5/7/2021", name: "bob"},
{date: "5/6/2021", name: "bob"},
{date: "5/6/2021", name: "bob"},
{date: "5/6/2021", name: "bob"},]
How to make the array into:
[ {"5/6/2021" : 3}, // 3 because there are 3 data with 5/6/2021 date
{"5/7/2021" : 1}] // 1 because there are 1 data with 5/7/2021 date
My Progress. updatedSales is the array name (Edit)
const temp = updatedSales.reduce((acc, { name, date }) => {
acc[name] = acc[name] || { name, dates: new Set(), totalSubmit: 0 };
acc[name].totalSubmit++;
acc[name].dates.add(date);
return acc;
}, {});
const result = Object.values(temp).map(({ name, dates, totalSubmit }) => ({ name, uniqueDate: dates.size, totalSubmit }));
const updatedSales=[{date: "5/7/2021", name: "bob"},
{date: "5/6/2021", name: "bob"},
{date: "5/6/2021", name: "bob"},
{date: "5/6/2021", name: "bob"},]
const temp = updatedSales.reduce((acc, { name, date }) => {
acc[name] = acc[name] || { name, dates: new Set(), totalSubmit: 0 };
acc[name].totalSubmit++;
acc[name].dates.add(date);
return acc;
}, {});
const result = Object.values(temp).map(({ name, dates, totalSubmit }) => ({ name, uniqueDate: dates.size, totalSubmit }));
console.log(result)
Expectation:
[ {"5/6/2021" : 3}, // 3 because there are 3 data with 5/6/2021 date
{"5/7/2021" : 1}]
Right now:
[{name: "bob", uniqueDate: 3, totalSubmit: 36},
{name: "steve", uniqueDate: 12, totalSubmit: 116}]
My desired output is the date to be different, not name. So its like "5/6/2021" instead of "bob".