Есть массив объектов:
let data = [
{ country: 'country1', city: 'city11' },
{ country: 'country2', city: 'city21' },
{ country: 'country3', city: 'city31' },
{ country: 'country1', city: 'city12' },
{ country: 'country1', city: 'city13' },
{ country: 'country2', city: 'city22' },
{ country: 'country3', city: 'city31' },
];
Нужно превратить его в объект, где ключами будут значения свойства country, а значениями массивы соответствующих значений свойства city:
{
'country1': [ 'city11', 'city12', 'city13' ],
'country2': [ 'city21', 'city22' ],
'country3': [ 'city31', 'city32' ],
}
Я сделал костыль:
let set = new Set;
for (let obj of data) {
set.add(obj.country);
}
let arr = [...set];
let arr1 = [];
let arr2 = [];
let arr3 = [];
for (let obj of data) {
if (obj.country === arr[0]) {
arr1.push(obj.city);
}
if (obj.country === arr[1]) {
arr2.push(obj.city);
}
if (obj.country === arr[2]) {
arr3.push(obj.city);
}
}
let subarr = [];
subarr.push(arr1, arr2, arr3);
let obj = {};
for(let i = 0; i < arr.length; i++) {
obj[arr[i]] = subarr[i];
}
console.log(obj);
Но нужно сделать универсальное решение.