Задать вопрос
@s24344

Как правильно отфильтровать свойства массива по вхождению (без учета регистра)?

Здравствуйте. Подскажите, пожалуйста, как правильно решить следующую задачу. У меня есть следующий массив.
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'
    }
]

Мне необходимо при вводе в:
<input type="text">
например следующее значение:
John Dennis
отфильтровать массив следующим образом:
let arr = [
    {
        id: 1,
        firstName: 'John',
        lastName: 'Smith'
    },
    {
        id: 2,
        firstName: 'Brady',
        lastName: 'Dennis'
    }
]

или например
Pratt Sm
let arr = [
    {
        id: 3,
        firstName: 'Sandoval',
        lastName: 'Pratt'
    },
    {
        id: 1,
        firstName: 'John',
        lastName: 'Smith'
    }
]

Буду благодарен любой помощи.
  • Вопрос задан
  • 470 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
const keys = [ 'firstName', 'lastName' ];
const values = document.querySelector('input').value.toLowerCase().match(/\S+/g) || [];
const result = arr.filter(n => keys.some(k => values.some(v => n[k].toLowerCase().includes(v))));
Ответ написан
zendor
@zendor
UPD:
const val = document.querySelector('input').value.trim().toLowerCase().split(/\s+/);
const res = arr.filter(o => val.some(s => o.firstName.toLowerCase().includes(s) || o.lastName.toLowerCase().includes(s)));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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