From f631595cca45c5f803f4f33da06d1299fb60ffd4 Mon Sep 17 00:00:00 2001 From: UndecimoDia Date: Thu, 23 Jul 2026 18:22:22 +0300 Subject: [PATCH] Added citizen filter by part of the name --- chapter3/public/analyst.js | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/chapter3/public/analyst.js b/chapter3/public/analyst.js index db50d4d..a69f7bf 100644 --- a/chapter3/public/analyst.js +++ b/chapter3/public/analyst.js @@ -67,10 +67,20 @@
`; dbOut = p.querySelector('#db-out'); p.querySelector('#q-go').onclick = () => { - const q = p.querySelector('#q-name').value.trim().toLowerCase(); - const hit = App.init.citizens.find(c => c.name.toLowerCase() === q); - if (!hit) { lastRows = null; dbOut.innerHTML = '

— Записів не знайдено. Перевірте написання.

'; return; } - lastRows = [hit]; renderRows(); + const q = p.querySelector('#q-name').value.trim(); + if (!q) { lastRows = null; dbOut.innerHTML = '

— Введіть ім\'я або прізвище.

'; return; } + // Розбиваємо введений запит на слова + const words = q.split(/\s+/); + // Фільтруємо: кожне введене слово має збігатися з початком якогось слова в імені громадянина + lastRows = App.init.citizens.filter(c => { + const nameWords = c.name.split(/\s+/); + return words.every(w => nameWords.some(nw => nw.startsWith(w))); + }); + if (!lastRows.length) { + dbOut.innerHTML = '

— Записів не знайдено. Спробуйте інший початок.

'; + return; + } + renderRows(); }; p.querySelector('#f-go').onclick = () => { const v = id => p.querySelector(id).value;