@HarryDaamn

Как получить уникальные значения свойства из массива объектов?

Есть массив:

const people = [
  {firstName: 'Eileen', lastName: 'Graham'},
  {firstName: 'Peter', lastName: 'Graham'},
  {firstName: 'Jared', lastName: 'Miller'},
  {firstName: 'Robert', lastName: 'Williams'},
  {firstName: 'Robert', lastName: 'Jolley'},
  {firstName: 'Robert', lastName: 'Graham'},
  {firstName: 'David', lastName: 'Jennings'},
];

Надо получить уникальные значения свойства firstName:

[ 'Eileen', 'Peter', 'Jared', 'Robert', 'David' ]
  • Вопрос задан
  • 458 просмотров
Решения вопроса 1
JamesHatfield
@JamesHatfield
Front-end developer
const people = [
  {firstName: 'Eileen', lastName: 'Graham'},
  {firstName: 'Peter', lastName: 'Graham'},
  {firstName: 'Jared', lastName: 'Miller'},
  {firstName: 'Robert', lastName: 'Williams'},
  {firstName: 'Robert', lastName: 'Jolley'},
  {firstName: 'Robert', lastName: 'Graham'},
  {firstName: 'David', lastName: 'Jennings'},
];

let getFirstName = people.map( el => el.firstName);

let getUniqueNames = (arr) => {
    let result = [];
    for (let item of arr) {
        if (!result.includes(item)) {
          result.push(item);
        }
    }
    return result;
}

console.log(getUniqueNames(getFirstName));
//[ 'Eileen', 'Peter', 'Jared', 'Robert', 'David' ]
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Не уверен, что именно это, но в массив попадают элементы, которые не имеют больше одного повторения по ключу.

const people = [
  {firstName: 'Eileen', lastName: 'Graham'},
  {firstName: 'Peter', lastName: 'Graham'},
  {firstName: 'Jared', lastName: 'Miller'},
  {firstName: 'Robert', lastName: 'Williams'},
  {firstName: 'Robert', lastName: 'Jolley'},
  {firstName: 'Robert', lastName: 'Graham'},
  {firstName: 'David', lastName: 'Jennings'},
];

const getUniqueByKey = (array, key) => {
  const result = []
  array.forEach((v) => {
    const keyValue = v[key]
    const repeatsCount = array.filter((_) => _[key] === keyValue).length

    if (repeatsCount === 1) {
      result.push(v)
    }
  })
  
  return result
}

getUniqueByKey(people, 'firstName')


На выходе получаем:
[
  { firstName: 'Eileen', lastName: 'Graham' },
  { firstName: 'Peter', lastName: 'Graham' },
  { firstName: 'Jared', lastName: 'Miller' },
  { firstName: 'David', lastName: 'Jennings' }
]
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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