--- interface Props { keyword: string; tags: string[]; categories: string[]; } const { keyword, tags, categories} = Astro.props; import Button from "./control/Button.astro"; import {getSortedPosts} from "../utils/content-utils"; import {getPostUrlBySlug} from "../utils/url-utils"; let posts = await getSortedPosts() if (Array.isArray(tags) && tags.length > 0) { posts = posts.filter(post => Array.isArray(post.data.tags) && post.data.tags.some(tag => tags.includes(tag)) ); } if (Array.isArray(categories) && categories.length > 0) { posts = posts.filter(post => Array.isArray(post.data.categories) && post.data.categories.some(category => categories.includes(category)) ); } const groups = function () { const groupedPosts = posts.reduce((grouped, post) => { const year = post.data.published.getFullYear() if (!grouped[year]) { grouped[year] = [] } grouped[year].push(post) return grouped }, {}) // convert the object to an array const groupedPostsArray = Object.keys(groupedPosts).map(key => ({ year: key, posts: groupedPosts[key] })) // sort years by latest first groupedPostsArray.sort((a, b) => b.year - a.year) return groupedPostsArray; }(); function formatDate(date: Date) { const month = (date.getMonth() + 1).toString().padStart(2, '0'); const day = date.getDate().toString().padStart(2, '0'); return `${month}-${day}`; } // console.log(groups) ---