はじめに
この記事を読めば、JavaScriptを使った前方一致の基本から応用まで、初心者にも分かりやすいように解説します。
使い方やカスタマイズ方法を12選のサンプルコード付きで紹介するので、これを参考に自分のプロジェクトに活用してみてください。
●JavaScriptとは
JavaScriptは、ウェブページに動的な要素を追加するために使用されるプログラミング言語です。
HTMLやCSSと組み合わせることで、ウェブサイトの見た目や振る舞いをコントロールできます。
●前方一致とは
前方一致とは、文字列がある特定の文字列で始まるかどうかを判定する方法です。
JavaScriptでは、文字列や配列などのデータを前方一致で検索・絞り込みしたり、条件分岐を行うことができます。
●基本的な前方一致の使い方
○サンプルコード1:文字列の前方一致判定
// 文字列の前方一致判定
const str = "こんにちは、世界!";
const prefix = "こんに";
if (str.startsWith(prefix)) {
console.log("前方一致です");
} else {
console.log("前方一致ではありません");
}
上記のサンプルコードでは、startsWith
関数を使って、文字列str
がprefix
で始まるかどうかを判定しています。
もし前方一致であれば、「前方一致です」と表示され、そうでなければ「前方一致ではありません」と表示されます。
○サンプルコード2:配列内の前方一致検索
// 配列内の前方一致検索
const words = ["apple", "banana", "orange", "grape"];
const searchPrefix = "ba";
const result = words.filter(word => word.startsWith(searchPrefix));
console.log(result);
このサンプルコードでは、startsWith
関数と配列のfilter
メソッドを組み合わせて、配列words
内の要素でsearchPrefix
で始まるものを検索しています。
結果として、前方一致する要素のみが含まれた新しい配列result
が作成されます。
●応用例
○サンプルコード3:検索ボックスでのリアルタイム絞り込み HTML部分
<input type="text" id="search" placeholder="検索...">
<ul id="list">
<li>apple</li>
<li>banana</li>
<li>orange</li>
<li>grape</li>
</ul>
JavaScript部分
const searchInput = document.getElementById('search');
const listItems = Array.from(document.querySelectorAll('#list li'));
searchInput.addEventListener('input', (e) => {
const searchText = e.target.value;
listItems.forEach(item => {
if (item.textContent.startsWith(searchText)) {
item.style.display = 'block';
} else {
item.style.display = 'none';
}
});
});
このサンプルコードでは、検索ボックスに入力された文字列でリストをリアルタイムに絞り込む機能を実装しています。
input
イベントリスナーを使って、検索ボックスの内容が変更されるたびにリストの表示を更新しています。
前方一致で絞り込む要素を判定するために、startsWith
関数を使用しています。
○サンプルコード4:URLからパラメータを取得して前方一致で条件分岐
// URLからパラメータを取得
const urlParams = new URLSearchParams(window.location.search);
const userType = urlParams.get('user_type');
// 前方一致で条件分岐
if (userType.startsWith('admin')) {
console.log('管理者です');
} else if (userType.startsWith('user')) {
console.log('一般ユーザーです');
} else {
console.log('不明なユーザータイプです');
}
このサンプルコードでは、URLからパラメータを取得し、それを前方一致で条件分岐に利用しています。
URLSearchParamsオブジェクトを使って、URLのパラメータを取得しています。
その後、startsWith
関数を用いて、ユーザータイプが’admin’か’user’で始まるかどうかを判定し、適切なメッセージを表示します。
●カスタマイズ方法
○サンプルコード5:大文字・小文字を区別しない前方一致判定
// 大文字・小文字を区別しない前方一致判定
const str = "Hello, World!";
const prefix = "he";
if (str.toLowerCase().startsWith(prefix.toLowerCase())) {
console.log("前方一致です");
} else {
console.log("前方一致ではありません");
}
上記のサンプルコードでは、toLowerCase
関数を使って、大文字・小文字を区別しない前方一致判定を行っています。
文字列とプレフィックスの両方を小文字に変換し、startsWith
関数で前方一致を判定します。
○サンプルコード6:正規表現を使った前方一致判定
// 正規表現を使った前方一致判定
const str = "こんにちは、世界!";
const prefix = "こんに";
const regex = new RegExp(`^${prefix}`);
if (regex.test(str)) {
console.log("前方一致です");
} else {
console.log("前方一致ではありません");
}
このサンプルコードでは、正規表現を使って前方一致を判定しています。^
記号は正規表現で文字列の先頭を表します。
RegExp
オブジェクトを使って、プレフィックスを正規表現に変換し、test
メソッドで前方一致を判定します。
●注意点と対処法
大文字・小文字の区別
startsWith
関数はデフォルトで大文字・小文字を区別して比較します。
区別しない場合は、toLowerCase
やtoUpperCase
関数を使って両方の文字列を同じケースに揃えてから比較しましょう。
空白や特殊文字
前方一致判定時に、意図しない空白や特殊文字が含まれることがあります。
これらを削除またはエスケープしてから比較することで、誤った判定を避けることができます。
マルチバイト文字の扱い
一部の環境では、マルチバイト文字の前方一致判定が正しく動作しないことがあります。
正規表現を使って前方一致を判定する場合、マルチバイト文字にも対応できるように注意しましょう。
まとめ
前方一致は、文字列が特定の文字や文字列で始まるかどうかを判定する方法です。
JavaScriptではstartsWith
関数を使って簡単に前方一致判定を行うことができます。
また、配列内の前方一致検索やリアルタイム絞り込みなどの応用例も紹介しました。
大文字・小文字の区別や特殊文字、マルチバイト文字の扱いに注意しながら、前方一致をうまく活用しましょう。