JavaScript разделение строки по дате и группировка в массиве

#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);