js计算排名

1.假数组:

studentList:[{
    name:'张三',
    store:99,
    ranking:1,
},{
    name:'李四',
    store:98,
    ranking:2,
},{
    name:'王五',
    store:98,
    ranking:3,
},{
    name:'赵四',
    store:96,
    ranking:4,
},{
    name:'张好',
    store:96,
    ranking:5,
},{
    name:'李丽',
    store:95,
    ranking:6,
},{
    name:'王强',
    store:95,
    ranking:7,
}]

2、计算排名:

(1)分数相同,排名并列,按排名12345升序排列

let prescore = 0;//预定义分数
let ranking = 0;//排名
 
studentList.forEach((item,index)=>{
    if(item.store==prescore){
        item.ranking = ranking;
    }else{
        ranking++;
        prescore = item.store;
        item.ranking = ranking;
    }
})
console.log(studentList)

效果图:

(2)分数相同,排名并列,按人数排名

let prescore = 0;//预定义分数
let ranking = 0;//排名
let same = 0; //是否相同
 
studentList.forEach((item,index)=>{
    if(item.store==prescore){
        item.ranking = ranking;
        same++;
    }else{
	ranking = ranking + same;
        ranking++;
        prescore = item.store;
        same=0;
        item.ranking = ranking;
    }
})

效果图:

 

转载于:https://zhuanlan.zhihu.com/p/128474165

 

 

 

 

 

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的示例代码: ```html <!DOCTYPE html> <html> <head> <title>斯皮尔曼等级相关计算器</title> </head> <body> <h1>斯皮尔曼等级相关计算器</h1> <form> <label>第一组数据:</label> <input type="text" id="data1" required><br><br> <label>第二组数据:</label> <input type="text" id="data2" required><br><br> <button type="button" onclick="calculate()">计算</button> </form> <br> <p>斯皮尔曼等级相关系数为:<span id="result"></span></p> <script> function calculate() { // 获取输入的数据并转换成数组 let data1 = document.getElementById('data1').value.split(","); let data2 = document.getElementById('data2').value.split(","); // 将数组中的每个元素转换成数字 data1 = data1.map(Number); data2 = data2.map(Number); // 计算每组数据的排名 let rank1 = getRank(data1); let rank2 = getRank(data2); // 计算斯皮尔曼等级相关系数 let n = rank1.length; let d = 0; for (let i = 0; i < n; i++) { d += Math.pow(rank1[i] - rank2[i], 2); } let rho = 1 - (6 * d) / (n * (Math.pow(n, 2) - 1)); // 显示计算结果 document.getElementById('result').innerHTML = rho.toFixed(4); } // 辅助函数:获取数据的排名 function getRank(arr) { let sortedArr = arr.slice().sort((a, b) => a - b); let rank = arr.map(e => sortedArr.indexOf(e) + 1); return rank; } </script> </body> </html> ``` 在这个示例中,我们使用了一个 `calculate` 函数来计算斯皮尔曼等级相关系数。该函数首先从输入框中获取两组数据,然后使用 `getRank` 函数计算每组数据的排名,最后根据斯皮尔曼等级相关系数的公式计算出系数并显示在页面上。 `getRank` 函数用于计算排名,它首先将原始数据数组复制一份并按升序排序,然后对于每个元素在排序后的数组中查找其位置并加 1,最后返回排名数组。 你可以将上面的代码保存为一个 HTML 文件并在浏览器中打开进行测试。注意,这只是一个简单的示例,实际使用时可能需要进行更多的输入验证和错误处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值