--- import BaseLayout from "../layouts/BaseLayout.astro" import { computed } from "vue" import MemberCard from "../components/MemberCard.astro" import { type Member, otherMembers } from "../store/member.ts" const members: Member[] = await fetch("https://api.nbtca.space/v2/members").then((res) => { return res.json() }) // memberId is like "3232323233", the second and third number is the year of the member const memberGroupByYear = computed(() => { const group = members // TODO delete the test member .filter(member => member.memberId != "0000000000" && member.memberId != "2333333333") .reduce( (acc, cur) => { const year = parseInt("20" + cur.memberId.slice(1, 3)) if (!acc[year]) { acc[year] = [] } acc[year].push(cur) return acc }, {} as Record, ) group["往届"] = otherMembers return group }) ---
协会成员
{ Object.keys(memberGroupByYear.value) .sort((a, b) => parseInt(b) - parseInt(a)) .map((year) => { return (
{year}
{memberGroupByYear.value[year].map(member => ( ))}
) }) }