diff options
| author | Fuwn <[email protected]> | 2023-12-03 15:49:02 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2023-12-03 15:49:02 -0800 |
| commit | 877df50ff0996559fe70dc4a309ab32e31cd2fa0 (patch) | |
| tree | b952cf1b1c85631307e6979be9cdd5c380671398 /src/lib | |
| parent | refactor(birthdays): move to modules (diff) | |
| download | due.moe-877df50ff0996559fe70dc4a309ab32e31cd2fa0.tar.xz due.moe-877df50ff0996559fe70dc4a309ab32e31cd2fa0.zip | |
fix(birthdays): remove duplicates
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/Tools/CharacterBirthdays.svelte | 52 |
1 files changed, 33 insertions, 19 deletions
diff --git a/src/lib/Tools/CharacterBirthdays.svelte b/src/lib/Tools/CharacterBirthdays.svelte index 2a14bbbb..2f37fc1b 100644 --- a/src/lib/Tools/CharacterBirthdays.svelte +++ b/src/lib/Tools/CharacterBirthdays.svelte @@ -19,25 +19,39 @@ anisearchBirthdays = aniSearchBirthdays(month, day); }); - const combineBirthdaySources = ( - acdbArray: ACDBBirthday[], - aniSearchArray: aniSearchBirthday[] - ): Birthday[] => - Array.from( - new Map( - [ - ...aniSearchArray.map((entry) => ({ - name: entry.name, - image: entry.image - })), - ...acdbArray.map((entry) => ({ - name: entry.name, - image: entry.character_image, - origin: entry.origin - })) - ].map((entry) => [entry.name, entry]) - ).values() - ); + function normalizeName(name: string): string { + return name.toLowerCase().split(' ').sort().join(' '); + } + + function combineBirthdaySources( + acdb: ACDBBirthday[], + aniSearch: aniSearchBirthday[] + ): Birthday[] { + const nameMap = new Map<string, Birthday>(); + + for (const entry of aniSearch.map((entry) => ({ + ...entry, + normalized_name: normalizeName(entry.name) + }))) { + nameMap.set(entry.normalized_name, { + name: entry.name, + image: entry.image + }); + } + + for (const entry of acdb) { + const normalized_name = normalizeName(entry.name); + if (!nameMap.has(normalized_name)) { + nameMap.set(normalized_name, { + name: entry.name, + image: entry.character_image, + origin: entry.origin + }); + } + } + + return Array.from(nameMap.values()); + } </script> {#await ACDBBirthdays(month, day)} |