Как добавить одинаковые значения обьекта в один массив?
Пишу приложения для погоды и хочу чтобы обьекты с одной датой(дня) помещались в созданный div.

То есть dt_txt с одинаковым значением помещать в один массив. То есть у меня прогноз на неделю. Нужно чтобы 31 - 1 - 2 и т.д., помещались в разные массивы, чтобы я смог их уже вывести на страницу в html блоке
Ответы (1 шт):
Если я правильно понял вашу задачу, то вам нужно будет сделать что-то такое ({ dt_txt } - это деструктуризация, вот документация по Object.values):
const weatherItems = []; // входные данные с погодой
const generateWeatherRenderConfig = (items) => items.reduce((acc, item) => {
const { dt_txt } = item; // извлекаем значение dt_txt
// если айтемов с таким dt_txt нет, инициализируем пустой массив для этого значения
if (!acc[dt_txt]) {
acc[dt_txt] = [];
}
acc[dt_txt].push(item); // добавляем айтем с погодой
return acc;
}, {});
/**
* Результат будет такой,
* если вам будет нужен массив массивов,
* то просто воспользуйтесь Object.values(),
* для сортировки по датам можно в генераторе добавить кастомный sort():
*
* {
* '2020-10-30 15:00:00': [],
* '2020-10-31 15:00:00': [],
* }
*/
const config = generateWeatherRenderConfig(weatherItems);
Либо изначально сформировать массив дат и отсортировать их:
const dates = weatherItems
.reduce((acc, { dt_txt }) => {
if (!acc.includes(dt_txt)) {
acc.push(dt_txt);
}
return acc;
}, [])
.sort((a, b) => new Date(a) - new Date(b));
На основе него сделать объект с последовательными ключами с пустыми массивами в качестве значений:
const datesConfig = dates.reduce((acc, date) => {
acc[date] = [];
return acc;
}, {});
Можно сразу сформировать удобную структуру для генерации нужных вам данных, но это уже выходит за рамки подобного ответа)