@yagyar001

Как записать данные в объект?

Всем привет. Учу Js. Есть такой массив:
let data = [
	{
		country: 'Россия',
		city:    'Москва'
	},
	{
		country: 'Беларусь',
		city:    'Минск'
	},
	{
		country: 'Россия',
		city:    'Питер'
	},
	{
		country: 'Россия',
		city:    'Владивосток'
	},
	{
		country: 'Украина',
		city:    'Львов'
	},
	{
		country: 'Беларусь',
		city:    'Могилев'
	},
	{
		country: 'Украина',
		city:    'Киев'
	}
];


Нужно написать код, чтобы в итоге получился вот такой объект:
{
	'Россия': [
		'Москва', 'Питер', 'Владивосток',
	],
	'Беларусь': [
		'Минск', 'Могилев'
	],
	'Украина': [
		'Киев', 'Львов'
	],
}

Вот мой код:
let res = {};

for (elem of data) {
	res[elem.country] = [];
	res[elem.country].push(elem.city);
}

console.log(res);


Но у меня что то не получается. Записывается только по одному элементу city. Что я делаю не так? Решить нужно только циклом.
  • Вопрос задан
  • 639 просмотров
Решения вопроса 2
RAX7
@RAX7
res[elem.country] = [];
res[elem.country] = res[elem.country] || [];
Ответ написан
like-a-boss
@like-a-boss
Признайся,тебяТянетНаКодМужика,ты—программный гей
var obj = {};

for (var i = 0; i < data.length; i++) {
  if (obj[data[i].country]) {
    obj[data[i].country].push(data[i].city);
  } else {
    obj[data[i].country] = [];
    obj[data[i].country].push(data[i].city);
  }
}

console.log(obj);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы