我想在Typescript中按克隆对Github Repos进行排序
纯js中的等价项是
repos.sort(async (a, b) => {
(await insights.traffic.clones(user, b.name, username, password)).uniques -
(await insights.traffic.clones(user, a.name, username, password)).uniques;
});
但是Array.prototype.sort((不适用于async/await
repos
是https://api.github.com/users/<user>/repos
insights
是克隆的import * as insights from 'github-insights'
文档
这将按降序对回购进行排序,成为唯一的克隆
它会获得我账户的每一笔回购,然后用https://api.github.com/repos/<user>/<repo>/traffic/clones
进行排序
有什么办法让它发挥作用吗?
使用快速排序
我想出了这个
const sorted = sort(repos).desc([
async (u) => await (await insights.traffic.clones(user, u.name, username, password)).uniques
]);
但这根本没有分类,它只是repos
尝试先获取所有信息,将其放入数组中,然后进行排序。
伪ish代码:
async function getClonesForRepo(repo) {
// Do your thing and return a number
}
const repoClones = new Map();
for(const repo of repos) {
repoClones.set(repo.name, await getClonesForRepo(repo));
}
const sorted = repos.sort(
(a, b) => repoClones.get(a.name) - repoClones.get(b.name)
);