Какие есть варианты решения такой задачки?

Есть массив с магазинами, где указаны название магазина и город
Как правильно вытащить из массива все города по 1 штуке?

Первое, что пришло на ум и сработало:
let cities = [];

// выборка городов по 1 штуке
SHOPS.map((item, i, arr) => {
    if ( cities.indexOf(item.geoObj) == -1 ) {
        cities.push(item.geoObj);
    }
});


Возможны ли другие, более изящные решения?
  • Вопрос задан
  • 330 просмотров
Решения вопроса 3
longclaps
@longclaps
Set
let cities = new Set(SHOPS.map(item => item.geoObj));
Ответ написан
kulakoff
@kulakoff
Vue.js developing
https://learn.javascript.ru/task/array-unique (решение с объектом)
Ответ написан
Комментировать
evgeniy8705
@evgeniy8705
Повелитель вселенной
const cities = [...new Set(shops.map(shop => shop.geoObj))];
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
sHinE
@sHinE
веб-разработчик, php/js/mysql и сопутствующее
Если вам всё равно какой магазин - то просто складывайте в объект, ключами в котором будет название города.
Ответ написан
Комментировать
Krasnodar_etc
@Krasnodar_etc
avito front
Я думаю, нет
Разве что писать
// Кстати, вы в примере отрицание забыли, если я правильно понял
if ( !~cities.indexOf(item.geoObj) ) { ...


Но это просто для красоты)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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