Вам не нужно повторять снова. Вы уже выполняете итерации в map
.
Образец:
let confirmed = {};
let deaths = {};
let recovered = {};
const objectWithParams = (param) =>
param.map(({ date, ...rest }) => {
const formatDate = date.split("-").map((element) => parseInt(element));
return { x: new Date(formatDate), ...rest };
});
confirmed = objectWithParams([
{
date: "03-04-2020",
death: 10,
active: 12,
recovered: 10,
},
{
date: "03-01-2020",
death: 10,
active: 12,
recovered: 10,
},
{
date: "03-02-2020",
death: 10,
active: 12,
recovered: 10,
},
{
date: "03-04-2020",
death: 10,
active: 12,
recovered: 10,
},
]);
console.log(confirmed);
Функция картографирования:
let confirmed = {};
let deaths = {};
let recovered = {};
class Mapper {
constructor(array, key) {
this.map = array.reduce((map, item) => {
const val = item[key];
if (!map[val]) {
map[val] = [];
}
map[val].push(item);
return map;
}, {});
}
find(key) {
return this.map[key] && this.map[key][Mapper.FIRST_INDEX]; //return blank array
}
findAll(key, returnUndefined) {
//return blank array
return this.map[key] ? this.map[key] : returnUndefined ? undefined : [];
}
}
Mapper.FIRST_INDEX = 0;
const data = [
{
date: "03-04-2020",
death: 10,
confirmed: 12,
recovered: 12,
},
{
date: "03-01-2020",
death: 10,
confirmed: 12,
recovered: 10,
},
{
date: "03-02-2020",
death: 10,
confirmed: 12,
recovered: 23,
},
{
date: "03-04-2020",
death: 10,
confirmed: 21,
recovered: 10,
},
]
var userMapper = new Mapper(data, "confirmed"); // create a map on names
console.log(JSON.stringify(userMapper.map, null, 4)); //will return only user with name 'Schmidt'
userMapper = new Mapper(data, "recovered"); // create a map on names
console.log(JSON.stringify(userMapper.map, null, 4)); //will return only user with name 'Schmidt'