@gsdev99

Как правильно отфильтровать массив?

Ребята, подскажите? пожалуйста, как правильно отфильтровать массив?
Исходный объект с массивом:
const obj = {
    people: [
        {
            id: 73334,
            rounds: [{ hole: 1 }],
            data: {
                menId: 73334,
                firstName: 'Alex'
            }
        },
        {
            id: 73334,
            rounds: [{ hole: 100 }],
            data: {
                menId: 8929,
                firstName: 'Mikhail'
            }
        },
        {
            id: 98064,
            rounds: [{ hole: 5 }],
            data: {}
        },
        {
            id: 73414,
            rounds: [{ hole: 10 }],
            data: {
                menId: 73414,
                firstName: 'Artyom'
            }
        },
        {
            id: 134616,
            rounds: [{ hole: 11 }],
            data: {
                menId: 73414,
                firstName: 'Kevin'
            }
        },
        {
            id: 139503,
            rounds: [{ hole: 10 }],
            data: {
                menId: 139503,
                firstName: 'Sergey'
            }
        },
        {
            id: 88989,
            rounds: []
        },
    ]
};

Массив с данными, по которым мы будем фильтровать:
const arr = [
    { menId: 139503, firstName: 'Sergey' },
    { menId: 73414, firstName: 'Artyom' },
    { menId: 8929, firstName: 'Mikhail' }
];
  • Вопрос задан
  • 96 просмотров
Решения вопроса 3
@Cruper
web-падаван
const filtered = obj.people.filter((p) => {
  for (let el of arr) {
    if (el.menId === p.data.menId && el.firstName === p.data.firstName) {
      return true
    }
  }
  return false
})
Ответ написан
Комментировать
0xD34F
@0xD34F Куратор тега JavaScript
const result = obj.people.filter(function(n) {
  return n.data && this.some(m => m.every(([ k, v ]) => n.data[k] === v));
}, arr.map(Object.entries));
Ответ написан
Комментировать
NeiroNx
@NeiroNx
Программист
let newarray = obj.people.filter(
   item=>arr.find(
      src=>
           item.data!=undefined && 
           item.data.menId == src.menId && 
           item.data.firstName == src.firstName
     )!=undefined);


не думаю что это правильно, но для начала пойдет.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Robur
@Robur
Знаю больше чем это необходимо
Для начала определите что для вас "правильно".
Без этого единственная общая "правильность" - это чтобы в результате лежало то что вам нужно. Это можно сделать как угодно, хоть руками или например так как вам выше написали.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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