Задать вопрос
@s24344

Как отфильтровать массив, чтобы значения определённого свойства не повторялись?

Есть массив:

const arr = [
    { id: 1, name: 'Alexey', country: 'Moscow' },
    { id: 2, name: 'Mikhail', country: 'Tula' },
    { id: 3, name: 'Vladimir', country: 'Moscow' },
    { id: 4, name: 'Andrey', country: 'Vladivostok' },
    { id: 5, name: 'Andrey', country: 'Moscow' },
    { id: 6, name: 'Peter', country: 'Vladivostok' },
    { id: 7, name: 'Sergey', country: 'Tula' }
]

Необходимо отфильтровать его следующим образом:

const arr = [
    { id: 1, country: 'Moscow' },
    { id: 2, country: 'Tula' },
    { id: 3, country: 'Vladivostok' }
]
  • Вопрос задан
  • 189 просмотров
Подписаться 1 Простой 2 комментария
Решение пользователя Егор Живагин К ответам на вопрос (3)
Krasnodar_etc
@Krasnodar_etc
fundraiseup
А почему никто не захотел применить reduce? Может я чего не знаю?
const newArray = arr.reduce((result, elem) => {
  const alreadyExist = Boolean(result.find(qwerty => qwerty.country === elem.country));

  if(!alreadyExist) {
    result.push({
      id: result.length + 1,
      country: elem.country
    });
  }
  return result;
}, []);
Ответ написан