Archi88
@Archi88
trainee JS

Отфильтровать массив объектов, в которых есть вложенный массив?

Есть массив объектов, и у каждого объекта есть массив строк. Подскажите, как вернуть только те объекты, у которых в массиве 'skills' есть js?

let arrObjects = [
    {
       name:'Irina',
       skills: ['js', 'html', 'css']
    },
    {
       name:'Ruslan',
       skills: ['nodeJs', 'html', 'css']
    },
    {
       name:'Kate',
       skills: ['react', 'js', 'css']
    },
    {
       name:'Dmitry',
       skills: ['hh', 'html', 'css']
    },
    {
       name:'Serg',
       skills: ['angular', 'mobX', 'js']
    },
]
  • Вопрос задан
  • 2371 просмотр
Решения вопроса 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Давайте представим, что skills у вас не массив, а булевое поле knows_js. Как можно получить такие элементы стандартными средствами языка?
Когда решите эту задачу, нужно решить вторую — как получить наличие или отсутствие элемента в массиве (js в skills) в виде булевого значения?
Ну и наконец — скомбинируйте ответы на два этих элементарных вопроса, чтобы получить рабочий код. Примерно так работает программирование — мы не заучиваем ответы на все возможные варианты задач, а учимся сложные задачи декомпозировать до простых, решение которых нам известно.
Ответ написан
Комментировать
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
const arrObjects = [
  {name:'Irina', skills: ['js', 'html', 'css']},
  {name:'Ruslan', skills: ['nodeJs', 'html', 'css']},
  {name:'Kate', skills: ['react', 'js', 'css']},
  {name:'Dmitry', skills: ['hh', 'html', 'css']},
  {name:'Serg', skills: ['angular', 'mobX', 'js']},
];
const result = arrObjects.filter(person => person.skills.includes('js'));
console.log(result);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
zkrvndm
@zkrvndm
Архитектор решений
Похоже на учебное задание. На jQuery такую фильтрацию можно сделать так:
$(arrObjects).filter(function(n, e) { return e.skills.includes('js'); });

Если нужен на выходе обычный массив, то так:
$.makeArray($(arrObjects).filter(function(n, e) { return e.skills.includes('js'); }));
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы