Есть массив:
[{ continent: 'Europa', country: 'Russia', region: 'Moskovska obl' }, { continent: 'Europa', country: 'Russia', region: 'Tumenskaya obl' }, { continent: 'North America', country: 'USA', region: 'Toronto' }, { continent: 'North America', country: 'USA', region: 'Texas' }]
Необходимо преобразовать в структуру:
[ { continent { name: 'Europa', countries:[{ name: 'Russia', regions: [{ name: 'Moskovska obl' }, { name: 'Tumenskaya obl' }] }] } }, { continent { name: 'North America', countries:[{ name: 'USA', regions: [{ name: 'Toronto' }, { name: 'Texas' }] }] } } ]
Можете подсказать как сделать преобразование?
С помощью Array.prototype.reduce и промежуточных словарей:
{
let data = [
{continent: 'Europa', country: 'Russia', region: 'Moskovska obl'},
{continent: 'Europa', country: 'Russia', region: 'Tumenskaya obl'},
{continent: 'North America', country: 'USA', region: 'Toronto'},
{continent: 'North America', country: 'USA', region: 'Texas'}
];
let continents = {};
let countries = {};
let regions = {};
let grouped = data.reduce((res, reg) => {
if (!res.continents) res.continents = [];
if (!continents[reg.continent]) {
let continent = {name: reg.continent, countries: []};
res.continents.push(continent);
continents[reg.continent] = continent;
}
if (!countries[reg.country]) {
let country = {name: reg.country, regions: []};
continents[reg.continent].countries.push(country);
countries[reg.country] = country;
}
if (!regions[reg.region]) {
let region = {name: reg.region};
countries[reg.country].regions.push(region);
regions[reg.region] = region;
}
return res;
}, {});
console.log(grouped)
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Какую базу данных лучше всего использовать для chrome extensions и возможно ли вообще это? Я хочу сделать базу данных слов и выбирать потом их по части...