Вот простой пример того, как найти подходящие ключи.Это делает следующее:
- Получение ключей
filter_form
с использованием Object.keys () . - Создание Установите этих клавиш для быстрого поиска, используя Set.has () .
- Выполните цикл по строкам.
- Для каждой строки получите ключи так же, как описано выше.
- Используйте Array.filter () , чтобы отфильтровать ключи, которыеприсутствуют в
filter_keys
.
var filter_form, rows, filter_keys, result;
filter_form = { 'claim_number': null, 'status': 'approved', 'patient': null, 'service_date': null };
rows = [
{ 'claim_number': '6632224-3', 'patient': 'Janine Soprano', 'allowed_amount': '$100', 'service': 'medical', 'status': 'approved', 'provider': 'Sam Smith' },
{ 'claim_number': '3218458-0', 'patient': 'Samatha Snow', 'allowed_amount': '$1100', 'service': 'medical', 'status': 'approved', 'provider': 'John Smith' }
];
filter_keys = new Set(Object.keys(filter_form));
result = rows.map(row => Object.keys(row).filter(key => filter_keys.has(key)));
console.log(result);
В этом ответе используется экземпляр Set для быстрого поиска ключей.Если вы не хотите использовать наборы, замените следующие части.
filter_keys = new Set(Object.keys(filter_form))
// with
filter_keys = Object.keys(filter_form)
key => filter_keys.has(key)
// with
key => filter_keys.indexOf(key) !== -1
Если вы не заинтересованы в отображении, а хотите работать с соответствующими ключамив текущей итерации используйте:
let filter_keys = new Set(Object.keys(filter_form));
rows.forEach(row => {
let matching_keys = Object.keys(row).filter(key => filter_keys.has(key));
// ...
});