diff options
| author | Fuwn <[email protected]> | 2023-12-23 03:45:05 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2023-12-23 03:45:05 -0800 |
| commit | 5f1f9c467a1aa4e1b8d598ed29bb6e7a567f9b53 (patch) | |
| tree | 382ccb36d27da108655753490d3e77b3da960364 /src/lib/Tools | |
| parent | fix(schedule): loading message order (diff) | |
| download | due.moe-5f1f9c467a1aa4e1b8d598ed29bb6e7a567f9b53.tar.xz due.moe-5f1f9c467a1aa4e1b8d598ed29bb6e7a567f9b53.zip | |
feat(wrapped): filter duplicates in merge
Diffstat (limited to 'src/lib/Tools')
| -rw-r--r-- | src/lib/Tools/Wrapped.svelte | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/src/lib/Tools/Wrapped.svelte b/src/lib/Tools/Wrapped.svelte index 4d3f6ec4..56c17942 100644 --- a/src/lib/Tools/Wrapped.svelte +++ b/src/lib/Tools/Wrapped.svelte @@ -346,13 +346,26 @@ await database.activities.bulkDelete((await database.activities.toArray()).map((m) => m.page)); }; - const mergeArraySort = (a: any, b: any) => [...a, ...b].sort((a, b) => b.meanScore - a.meanScore); + const mergeArraySort = (a: any, b: any, mode: 'tags' | 'genres') => { + let merged = [...a, ...b].sort((a, b) => b.meanScore - a.meanScore); + + merged = merged.filter( + (item, index, self) => + self.findIndex((itemToCompare) => + mode === 'genres' + ? itemToCompare.genre === item.genre + : itemToCompare.tag.name === item.tag.name + ) === index + ); + + return merged; + }; const randomCoverFromTop10 = ( statistics: { anime: any; manga: any }, mode: 'tags' | 'genres' ) => { - const top = mergeArraySort(statistics.anime[mode], statistics.manga[mode]); + const top = mergeArraySort(statistics.anime[mode], statistics.manga[mode], mode); return mediaCover(top[Math.floor(Math.random() * top.length)].mediaIds[0]); }; @@ -497,7 +510,7 @@ <div> <b>Highest Rated Genres</b> <ol> - {#each mergeArraySort(wrapped.statistics.anime.genres, wrapped.statistics.manga.genres).slice(0, highestRatedCount) as genre} + {#each mergeArraySort(wrapped.statistics.anime.genres, wrapped.statistics.manga.genres, 'genres').slice(0, highestRatedCount) as genre} <li> <a href={`https://anilist.co/search/anime?genres=${genre.genre}`} @@ -524,7 +537,7 @@ <div> <b>Highest Rated Tags</b> <ol> - {#each mergeArraySort(wrapped.statistics.anime.tags, wrapped.statistics.manga.tags).slice(0, highestRatedCount) as tag} + {#each mergeArraySort(wrapped.statistics.anime.tags, wrapped.statistics.manga.tags, 'tags').slice(0, highestRatedCount) as tag} <li> <a href={`https://anilist.co/search/anime?genres=${tag.tag.name}`} |