2015-03-25 2 views
0

топ 20% все оценок является А. второго 20% баллов является B. третьего 20% баллов является C. четвёртой 20% баллов является D . нижние 20% баллов является Ф.Как сортировать испытание сортов буквы класса

следующие оценки:

99, 92, 91, 91, 89, 85, 83, 82, 80, 79, 78, 78, 77, 76, 75, 74, 62, 55, 43, 
20 

мне нужно написать функцию, которая принимает список оценка любой длины (не обязательно список, используемый в качестве примера выше) в качестве параметра и возвращает список оценок, связанных с этими оценками.

Пока что я получил это:

<!DOCTYPE html> 
<html> 
<body> 

<p>Click the button sort out grades.</p> 

<button onclick="myFunction()">Calculate</button> 

<p id="testScores"></p> 
<p id="top"><p> 
<p id="second"><p> 
<p id="third"><p> 
<p id="fourth"><p> 
<p id="bottom"><p> 

<script> 
var grades = [89, 92, 20, 91, 99, 85, 83, 82, 77, 62, 78, 78, 80, 76, 75, 43, 72, 55, 74, 
    91]; 
document.getElementById("testScores").innerHTML = grades;  

function myFunction() { 
    grades.sort(function(a, b){return a-b}); 
    document.getElementById("testScores").innerHTML = grades; 
    document.getElementById("top").innerHTML = grades; 
    document.getElementById("second").innerHTML = grades; 
    document.getElementById("third").innerHTML = grades; 
    document.getElementById("fourth").innerHTML = grades; 
    document.getElementById("bottom").innerHTML = grades; 

} 
</script> 

</body> 
</html> 

Я могу заставить его сойти с величайшим наименее, и есть отдельные строки для каждой строки (A, B, C, D, F). Я не могу понять, как получить оценки, распределенные с шагом в 20%.

I want the output to be: 
A=99,92,91,91 
B=89,85,83,82 
C=80,79,78,78 
D=77,76,75,74 
F=62,55,43,20 
+0

Это пахнет домашним заданием. – Dennisch

+0

Ха-ха, я бы хотел. Тогда я смогу попросить учителя о помощи. Это на самом деле то, что мой друг хотел реализовать. Он получил лицензию на обучение в Массачусетсе. –

ответ

0

Вы можете попробовать это,

var grades = [89, 92, 20, 91, 99, 85, 83, 82, 77, 62, 78, 78, 80, 76, 75, 43, 72, 55, 74,44, 
 
    91]; 
 
document.getElementById("testScores").innerHTML = grades;  
 

 
function myFunction() { 
 
    grades.sort(function(a, b){return b-a}); 
 
    document.getElementById("testScores").innerHTML = grades; 
 
    var slice = Math.ceil(grades.length * 0.2), init = 0; 
 
    
 
    document.getElementById("top").innerHTML = grades.slice(init, init+slice); 
 
    init+=slice; 
 
    document.getElementById("second").innerHTML = grades.slice(init, init+slice); 
 
    init+=slice; 
 
    document.getElementById("third").innerHTML = grades.slice(init, init+slice); 
 
    init+=slice; 
 
    document.getElementById("fourth").innerHTML = grades.slice(init, init+slice); 
 
    init+=slice; 
 
    document.getElementById("bottom").innerHTML = grades.slice(init, init+slice); 
 

 
}
<!DOCTYPE html> 
 
<html> 
 
<body> 
 

 
<p>Click the button sort out grades.</p> 
 

 
<button onclick="myFunction()">Calculate</button> 
 

 
<p id="testScores"></p> 
 
<p id="top"><p> 
 
<p id="second"><p> 
 
<p id="third"><p> 
 
<p id="fourth"><p> 
 
<p id="bottom"><p> 
 

 
</body> 
 
</html>

+0

Как я могу реализовать Math.ceil(), чтобы я мог убедиться, что поплавки тоже работают? –

+0

Math.ceil сделал трюк спасибо! –

0

То, как я сделал это, чтобы создать функцию groupByPercentile. Это принимает два аргумента (может заставить их взять один, но это более многократно используется) и возвращает объект классов, каждый из которых содержит массив баллов.

function groupByPercentile (sortedArray, percent) { 
    var group = { 
    "A": [], 
    "B": [], 
    "C": [], 
    "D": [], 
    "F": [] 
    }; 

    var percentile = sortedArray.length * percent; 

    for (var i = 0; i < sortedArray.length; i++) { 
    if (group["A"].length < percentile) { group["A"].push(sortedArray[i]); continue; }; 
    if (group["B"].length < percentile) { group["B"].push(sortedArray[i]); continue; }; 
    if (group["C"].length < percentile) { group["C"].push(sortedArray[i]); continue; }; 
    if (group["D"].length < percentile) { group["D"].push(sortedArray[i]); continue; }; 
    if (group["F"].length < percentile) { group["F"].push(sortedArray[i]); continue; }; 
    }; 

    //Here you can return a specific grade to get the array, or the object and deal with it later 
    return group["A"]; 

} 
Смежные вопросы