这个排序函数在js中是如何工作的?



InNext.js网站(这里是https://nextjs.org/learn/basics/data-fetching/implement-getstaticprops),这个例子:

import path from 'path'
import matter from 'gray-matter'
const postsDirectory = path.join(process.cwd(), 'posts')
export function getSortedPostsData() {
// Get file names under /posts
const fileNames = fs.readdirSync(postsDirectory)
const allPostsData = fileNames.map(fileName => {
// Remove ".md" from file name to get id
const id = fileName.replace(/.md$/, '')
// Read markdown file as string
const fullPath = path.join(postsDirectory, fileName)
const fileContents = fs.readFileSync(fullPath, 'utf8')
// Use gray-matter to parse the post metadata section
const matterResult = matter(fileContents)
// Combine the data with the id
return {
id,
...matterResult.data
}
})
// Sort posts by date
return allPostsData.sort(({ date: a }, { date: b }) => {
if (a < b) {
return 1
} else if (a > b) {
return -1
} else {
return 0
}
})
}

在这个例子中,函数getSortedPostsData()的返回值是allPostsData的排序列表. 文章按日期排序。

我的问题是数组如何排序?

排序函数{date:a}, {date:b}接受两个参数.是否自动将参数转换为日期对象a。date和b.date是字符串

这个答案显示了每种情况下使用的排序算法。

它是不是自动将参数转换为日期。这必须事先做好。如果您说日期a和日期b是字符串,它们将根据提供给排序函数的回调按字典顺序进行比较。

最新更新