ES6での部分一致検索機能を作成しました。
配列から検索できるサンプルコードは検索しても見つからなかったので、その型だけここに残します。
大文字、小文字、全角、半角などのバリデーション判定は実装していないので、適宜調整します。
index.html
<input type="search" id="js-search" />
<ul id="js-stock">
<li>入力してください...</li>
</ul>
script.js
const nameArray = [
'tanaka',
'yamada',
'sato',
'suzuki',
'tanaka',
'sato',
'saito',
'takahashi',
'ito',
'nakamura'
];
const searchInput = document.getElementById('js-search')
const searchItem = document.getElementById('js-stock')
searchInput.addEventListener('input', function () {
let stockList = '';
let stockCount = 0;
nameArray.forEach(function (keyWord) {
if (keyWord.includes(searchInput.value)) {
stockList += `<li>'${keyWord}'が見つかりました。</li>`;
stockCount++;
}
});
while (searchItem.firstChild) {
searchItem.removeChild(searchItem.firstChild);
}
if (stockList === '') {
searchItem.innerHTML = `'${searchInput.value}'に一致する名前は見つかりませんでした。`;
} else if (stockCount === nameArray.length) {
searchItem.innerHTML = `入力してください...`;
} else {
searchItem.innerHTML = stockList;
}
});
コピペだけでちゃんと動作する...はず。
参考
JavaScriptの文字列マッチングまとめ(indexOf, lastIndexOf)
JavaScript removeChildメソッドの使い方:既存の子要素を削除する方法