#javascript #arrays
#javascript #массивы
Вопрос:
ну, у меня есть этот массив
let a = ["2020-09-13 10:00", "2020-09-13 11:00", "2020-09-14 10:00"];
и я хочу, чтобы это выглядело так
{"2020-09-13": ["10:00","11:00"]},
{"2020-09-14": ["10:00"]}
Я пробовал все, что приходит мне в голову, но я думаю, что я немного устал, не могли бы вы, ребята, помочь?
Комментарии:
1. любые другие эффективные способы тоже в порядке, я не мог понять, какой из них является лучшим способом их хранения, поскольку данные зависят от дат и их времени
Ответ №1:
let a = ["2020-09-13 10:00", "2020-09-13 11:00", "2020-09-14 10:00"];
const result = a.map(elem => elem.split(" ")).reduce((accm, elem) => {
const date = elem[0];
const time = elem[1];
let accmValues = accm[date];
if (!accmValues) {
accmValues = []
}
accmValues.push(time)
accm[date] = accmValues
return accm
}, {});
console.log(result)
Ответ №2:
Используя String.split
, вы можете разделить значение date
amp; time
.
И используя Array.reduce
, вы можете группировать по date
значению ключа.
const a = ["2020-09-13 10:00", "2020-09-13 11:00", "2020-09-14 10:00"];
const result = a.reduce((acc, cur) => {
const timeArr = cur.split(' ');
acc[timeArr[0]] ? acc[timeArr[0]].push(timeArr[1]) : acc[timeArr[0]] = [ timeArr[1] ];
return acc;
}, {});
console.log(result);