js实现数组求排名 例如[4,7,9,3,2]=>[3,4,5,2,1]
时间: 2023-10-05 14:04:36 浏览: 73
D3js基础入门
可以通过以下js代码实现数组求排名:
```
function rank(arr) {
// 复制一份原始数组,方便后续操作
var cloneArr = arr.slice();
// 对数组进行从大到小的排序
cloneArr.sort(function(a, b) {
return b - a;
});
// 创建一个空对象,用于存储每个元素的排名
var rankObj = {};
// 遍历数组,并给每个元素进行排名
cloneArr.forEach(function(ele, index) {
// 将元素的排名作为key,元素的值作为value存入rankObj中
rankObj[ele] = index + 1;
});
// 遍历原始数组,将原始数组每个元素的排名存入result数组中
var result = arr.map(function(ele) {
return rankObj[ele];
});
// 返回排名数组
return result;
}
// 测试
var arr = [4, 7, 9, 3, 2];
var result = rank(arr);
console.log(result); // [3, 4, 5, 2, 1]
```
这段代码会先复制一份原始数组,并对这份复制后的数组进行从大到小的排序。然后创建一个空对象rankObj,用于存储每个元素的排名。遍历排好序的数组,将每个元素及其对应的排名存入rankObj中。最后遍历原始数组,将每个元素的排名从rankObj中取出,存储到result数组中,返回result数组即可。
阅读全文