我需要此 javascript 代码的更优化版本来查找数组中的 3 个最大值。我需要获得最大数字的索引。有没有其他更简单的方法来解决这个问题?
var maxIndex = new Array();
var maxPoints = new Array();
var scoreByPattern = new Array(93, 17, 56, 91, 98, 33, 9, 38, 55, 78, 29, 81, 60);
function findLargest3() {
maxPoints[0] = 0;
maxPoints[1] = 0;
maxPoints[2] = 0;
for (i = 0; i < scoreByPattern.length; i++) {
if (scoreByPattern[i] > maxPoints[0]) {
maxPoints[0] = scoreByPattern[i];
maxIndex[0] = i;
}
}
for (i = 0; i < scoreByPattern.length; i++) {
if (scoreByPattern[i] > maxPoints[1] && scoreByPattern[i] < maxPoints[0]) {
maxPoints[1] = scoreByPattern[i];
maxIndex[1] = i;
}
}
for (i = 0; i < scoreByPattern.length; i++) {
if (scoreByPattern[i] > maxPoints[2] && scoreByPattern[i] < maxPoints[1]) {
maxPoints[2] = scoreByPattern[i];
maxIndex[2] = i;
}
}
console.log(scoreByPattern + "/******/" + maxPoints[0] + "/" + maxPoints[1] + "/" + maxPoints[2]);
//alert(maxIndex);
}
findLargest3();
原文由 tilak 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以对数组进行降序排序。然后最高 3 个值的索引将是数组中的前三个项目。您可以单独访问它们或使用
slice()
立即获取它们。下面的示例显示了这两种方法。