From 4f206eea9fd5746470f548a1e067e4546c34f950 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=8B=E3=81=A3=E3=81=93=E3=81=8B=E3=82=8A?= <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Tue, 1 Apr 2025 17:15:22 +0900 Subject: [PATCH] =?UTF-8?q?refactor(frontend):=20intl-string=E3=81=AE?= =?UTF-8?q?=E5=87=A6=E7=90=86=E3=81=AE=E3=83=91=E3=83=95=E3=82=A9=E3=83=BC?= =?UTF-8?q?=E3=83=9E=E3=83=B3=E3=82=B9=E5=90=91=E4=B8=8A=20(#15737)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor(frontend): intl-stringの処理のパフォーマンス向上 * :v: --- packages/frontend/src/utility/intl-string.ts | 21 ++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/packages/frontend/src/utility/intl-string.ts b/packages/frontend/src/utility/intl-string.ts index a5b5bbb592..4bc51e2cb0 100644 --- a/packages/frontend/src/utility/intl-string.ts +++ b/packages/frontend/src/utility/intl-string.ts @@ -9,9 +9,9 @@ import type { toHiragana as toHiraganaType } from 'wanakana'; let toHiragana: typeof toHiraganaType = (str?: string) => str ?? ''; let isWanakanaLoaded = false; -/** +/** * ローマ字変換のセットアップ(日本語以外の環境で読み込まないのでlazy-loading) - * + * * ここの比較系関数を使う際は事前に呼び出す必要がある */ export async function initIntlString(forceWanakana = false) { @@ -82,16 +82,17 @@ export function normalizeStringWithHiragana(str: string) { /** aとbが同じかどうか */ export function compareStringEquals(a: string, b: string) { - return ( - normalizeString(a) === normalizeString(b) || - normalizeStringWithHiragana(a) === normalizeStringWithHiragana(b) - ); + if (a === b) return true; // まったく同じ場合はtrue。なお、ノーマライズ前後で文字数が変化することがあるため、文字数が違うからといってfalseにはできない + if (normalizeString(a) === normalizeString(b)) return true; + if (normalizeStringWithHiragana(a) === normalizeStringWithHiragana(b)) return true; + return false; } /** baseにqueryが含まれているかどうか */ export function compareStringIncludes(base: string, query: string) { - return ( - normalizeString(base).includes(normalizeString(query)) || - normalizeStringWithHiragana(base).includes(normalizeStringWithHiragana(query)) - ); + if (base === query) return true; // まったく同じ場合は含まれていると考えてよいのでtrue + if (base.includes(query)) return true; + if (normalizeString(base).includes(normalizeString(query))) return true; + if (normalizeStringWithHiragana(base).includes(normalizeStringWithHiragana(query))) return true; + return false; }