计算JavaScript数组的排名
排名是一个数组的元素的位置列表,根据一个比较函数确定。这对于排序算法或者在列表中显示目的的排名项目非常有用。
为了实现这个功能,你可以使用Array.prototype.map()
来遍历每个元素,并将其映射到它的排名。为了计算排名,你可以使用Array.prototype.filter()
来计算小于当前元素的元素数量,根据提供的比较函数compFn
。
const ranking = (arr, compFn) =>
arr.map(a => arr.filter(b => compFn(a, b)).length + 1);
ranking([8, 6, 9, 5], (a, b) => a < b);
// [2, 3, 1, 4]
ranking(['c', 'a', 'b', 'd'], (a, b) => a.localeCompare(b) > 0);
// [3, 1, 2, 4]