@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' ]
  • Вопрос задан
  • 86 просмотров
Решения вопроса 1
Poznakomlus
@Poznakomlus
Программист: php, js, go
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 getUniqNames = people => [...new Set(people.map(({firstName}) => firstName))]
console.log(getUniqNames(people));
//[ 'Eileen', 'Peter', 'Jared', 'Robert', 'David' ]

Вариант
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
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' ]
Ответ написан
@sugarbaby
Не уверен, что именно это, но в массив попадают элементы, которые не имеют больше одного повторения по ключу.

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' }
]
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
27 окт. 2020, в 15:42
1000 руб./в час
27 окт. 2020, в 15:30
100000 руб./за проект
27 окт. 2020, в 15:28
100000 руб./за проект