Всем привет. Исходный массив:
let arr = [
{
id: 1,
firstName: 'John',
lastName: 'Smith'
},
{
id: 2,
firstName: 'Brady',
lastName: 'Dennis'
},
{
id: 3,
firstName: 'Sandoval',
lastName: 'Pratt'
},
{
id: 4,
firstName: 'Davis',
lastName: 'Andrews'
}
]
Свойства, по которым нужно отфильтровать:
const filterBy = ['firstName', 'lastName'];
Вхождения (условия) по которым фильтруем:
const filterVal = ['joh', 'den'];
Результат:
/*
output
[
{ id: 1, firstName: 'John', lastName: 'Smith' },
{ id: 2, firstName: 'Brady', lastName: 'Dennis' }
]
*/
Решение:
function solution(a) {
return a.filter(item => {
return filterBy.some(prop => {
return filterVal.some(i => {
return item[prop].toLowerCase().includes(i)
})
})
})
}
console.log(solution(arr));
Решение в плане сложности алгоритма не оптимальное. Подскажите, пожалуйста, как его оптимизировать?