summaryrefslogtreecommitdiff
path: root/packages/frontend/src
diff options
context:
space:
mode:
authorかっこかり <67428053+kakkokari-gtyih@users.noreply.github.com>2025-04-01 17:15:22 +0900
committerGitHub <noreply@github.com>2025-04-01 17:15:22 +0900
commit4f206eea9fd5746470f548a1e067e4546c34f950 (patch)
tree6bb36b42d003875eb26cc7be04106b11a9229049 /packages/frontend/src
parent🎨 (diff)
downloadmisskey-4f206eea9fd5746470f548a1e067e4546c34f950.tar.gz
misskey-4f206eea9fd5746470f548a1e067e4546c34f950.tar.bz2
misskey-4f206eea9fd5746470f548a1e067e4546c34f950.zip
refactor(frontend): intl-stringの処理のパフォーマンス向上 (#15737)
* refactor(frontend): intl-stringの処理のパフォーマンス向上 * :v:
Diffstat (limited to 'packages/frontend/src')
-rw-r--r--packages/frontend/src/utility/intl-string.ts21
1 files 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;
}