javascript - 基于多条件/因素的排名算法

标签 javascript algorithm math

我正在写一个小游戏,但最后卡住了。这是一个简单的测验,它根据正确回答的问题数量和完成一组问题所需的时间对用户进行排名。

我可以很容易地根据谁回答的问题最多来对用户进行排名,但是我如何根据 2 个条件来计算谁是最佳表现者呢?

最佳答案

您可以在 Array.prototype.sort() 的比较函数中一次处理多个条件。

例子:

var score = [];

storeScore('user1', 7, 65); // 7 correct answers in 65 sec.
storeScore('user2', 8, 70); // 8 correct answers in 70 sec.
storeScore('user3', 6, 50); // 6 correct answers in 50 sec.
storeScore('user4', 7, 50); // 7 correct answers in 50 sec.

score = score.sort(function(a, b) {
  return b.correct > a.correct || (b.correct == a.correct && b.time < a.time);
});

for(var id in score) {
  console.log(
    '#' + ((id | 0) + 1),
    score[id].userId,
    score[id].correct + ' correct answers in ' +
    score[id].time + ' seconds'
  );
}

function storeScore(userId, correct, time) {
  score.push({
    userId : userId,
    correct: correct,
    time   : time
  });
}

输出:

#1 user2 8 correct answers in 70 seconds
#2 user4 7 correct answers in 50 seconds
#3 user1 7 correct answers in 65 seconds
#4 user3 6 correct answers in 50 seconds

关于javascript - 基于多条件/因素的排名算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38196161/

相关文章:

java - 拆分字符串行列表并将单词添加到新列表中

python - python中任何给定数字的路径复杂度(最快路径)

c# - html5和C#之间的web socket通信

c - 插入排序 C 代码无法正常工作,它只对前两个元素进行排序

javascript - 将列搜索应用于当前 jQuery DataTable 第 2 部分

java - 如何生成随机数以提供正确的除法结果

java - 用于查看一个点是否在给定三对坐标的线上的最佳方法?

algorithm - 如何用归纳法证明两条边对应的抛物线至多相交2点?

Javascript 或 Jquery - 对于该数组上的每个

javascript - 如何在 native JavaScript 中使用边距、填充、边框获取元素宽度/高度(无 jQuery)