Есть объекты. Внутри объектов есть ещё один объект. Таким образом при переборе toArrayStaff у нас получается:
toArrayStaff - переменная с объектами
toArrayStaff.element - конкретный объект при переборе методом filter, например
toArrayStaff.element.full_names - тоже объект, в котором нужно найти совпадение
Если внутри full_names есть совпадение по искомому слову, то я должен вернуть element сохранив его исключительно в toArrayStaff (по сути просто отфильтровав лишние). Я пробую так:
toArrayStaff = toArrayStaff.filter(element => {
const allName = Object.values(element.full_names) // преобразовываем в массив значения объекта
allName.filter(name => {
// ищем строку в подстроке
if ( name.indexOf("имя") !== -1 ) {
return element // вот тут ещё есть отфильтрованные значения
}
})
return element // а вот тут уже нет - возвращаются абсолютно все без учёта перебора allName
})
На выхлопе получается тот же самый объект, как будь-то его и не фильтровали.