refactor(frontend): intl-stringの処理のパフォーマンス向上 (#15737)

* refactor(frontend): intl-stringの処理のパフォーマンス向上

* ✌️
This commit is contained in:
かっこかり 2025-04-01 17:15:22 +09:00 committed by GitHub
parent f4f9832f8b
commit 4f206eea9f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 11 additions and 10 deletions

View File

@ -9,9 +9,9 @@ import type { toHiragana as toHiraganaType } from 'wanakana';
let toHiragana: typeof toHiraganaType = (str?: string) => str ?? ''; let toHiragana: typeof toHiraganaType = (str?: string) => str ?? '';
let isWanakanaLoaded = false; let isWanakanaLoaded = false;
/** /**
* lazy-loading * lazy-loading
* *
* 使 * 使
*/ */
export async function initIntlString(forceWanakana = false) { export async function initIntlString(forceWanakana = false) {
@ -82,16 +82,17 @@ export function normalizeStringWithHiragana(str: string) {
/** aとbが同じかどうか */ /** aとbが同じかどうか */
export function compareStringEquals(a: string, b: string) { export function compareStringEquals(a: string, b: string) {
return ( if (a === b) return true; // まったく同じ場合はtrue。なお、ーマライズ前後で文字数が変化することがあるため、文字数が違うからといってfalseにはできない
normalizeString(a) === normalizeString(b) || if (normalizeString(a) === normalizeString(b)) return true;
normalizeStringWithHiragana(a) === normalizeStringWithHiragana(b) if (normalizeStringWithHiragana(a) === normalizeStringWithHiragana(b)) return true;
); return false;
} }
/** baseにqueryが含まれているかどうか */ /** baseにqueryが含まれているかどうか */
export function compareStringIncludes(base: string, query: string) { export function compareStringIncludes(base: string, query: string) {
return ( if (base === query) return true; // まったく同じ場合は含まれていると考えてよいのでtrue
normalizeString(base).includes(normalizeString(query)) || if (base.includes(query)) return true;
normalizeStringWithHiragana(base).includes(normalizeStringWithHiragana(query)) if (normalizeString(base).includes(normalizeString(query))) return true;
); if (normalizeStringWithHiragana(base).includes(normalizeStringWithHiragana(query))) return true;
return false;
} }