@arhis77

Как создать массив из значений свойств другого массива на JavaScript?

Здравствуйте, у меня вопрос, имеется массив объектов, которые содержат в себе несколько ключей - значений, и один их них город.

var objects = [
	{
		'name': 'Имя объекта 1',
		'address':  'адрес объекта',
		'city': 'Москва',
	},
	{
		'name': 'Имя объекта 2',
		'address':  'адрес объекта',
		'city': 'Санкт-Петербург',
	},
	{
		'name': 'Имя объекта 3',
		'address':  'адрес объекта',
		'city': 'Саратов',
	},
	{
		'name': 'Имя объекта 4',
		'address':  'адрес объекта',
		'city': 'Саратов',
	}
	];


И мне необходимо вывести значения свойства город, при этом удалив дубли городов, т.е. если есть 2 раза Саратов например в списке, то его убрать. Как убирать дубли из массива я в принципе знаю, но как получить массив из этих значений пока не могу понять. Т.е. по идее, мне нужно создать массив из значений свойства город, и уже в нем удалить дубли. Пока что я смог получить только список городов, таким образом:

for (var i = 0; i < objects.length; i++) {
		let list = [objects[i].city];
		for (let item of Object.values(list)) {
			console.log(item);
		}
	}


Заранее благодарен за любой совет!
  • Вопрос задан
  • 48 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
[...new Set(objects.map(n => n.city))]

или

Object.keys(Object.fromEntries(objects.map(n => [ n.city, 1 ])))

или

objects.map(n => n.city).filter((n, i, a) => i === a.indexOf(n))

или

objects.reduce((acc, { city }) => (acc.includes(city) || acc.push(city), acc), [])
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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