mirror of
https://github.com/d0zingcat/NotionNext.git
synced 2026-05-15 15:09:25 +00:00
37 lines
877 B
JavaScript
37 lines
877 B
JavaScript
/**
|
|
* 获取所有文章的分类
|
|
* @param allPosts
|
|
* @returns {Promise<{}|*[]>}
|
|
*/
|
|
export async function getAllCategories ({ allPosts, categoryOptions, sliceCount = 0 }) {
|
|
if (!allPosts || !categoryOptions) {
|
|
return []
|
|
}
|
|
// 计数
|
|
let categories = allPosts.map(p => p.category)
|
|
categories = [...categories.flat()]
|
|
const categoryObj = {}
|
|
categories.forEach(category => {
|
|
if (category in categoryObj) {
|
|
categoryObj[category]++
|
|
} else {
|
|
categoryObj[category] = 1
|
|
}
|
|
})
|
|
const list = []
|
|
categoryOptions.forEach(c => {
|
|
const count = categoryObj[c.value]
|
|
if (count) {
|
|
list.push({ id: c.id, name: c.value, color: c.color, count })
|
|
}
|
|
})
|
|
|
|
// 按照数量排序
|
|
// list.sort((a, b) => b.count - a.count)
|
|
if (sliceCount && sliceCount > 0) {
|
|
return list.slice(0, sliceCount)
|
|
} else {
|
|
return list
|
|
}
|
|
}
|