好的......非常新的JavaScript,所以我开始这个小家庭项目开始学习和熟悉。
这是情况。我有一个名为maxScore的var,它从和数组中拉出测试名称(例如test [0])和随机生成的“得分”(例如s0)
我想知道如何:
HTML code:
<p id="result">Yourhighest score(s): </p>
使用Javascript:
var maxScore = [];
maxScore.push({
name: test[0],
score: s0
});
maxScore.push({
name: test[1],
score: s1
});
maxScore.push({
name: test[2],
score: s2
});
// etc...
// sort maxScore by Score
// get highest test name & score(s)
// get lowest test name & score(s)
// Output name and score
result.innerHTML = ???
所需输出的示例:
您的最高分:数学:98和英语98
您的最低分数:公民:67
(如果有办法以某种方式将最高的测试名称注入到php字符串中以便在页面上的其他位置使用,那也会很酷。)
提前感谢您的帮助。
答案 0 :(得分:1)
您可以创建几个函数来对数组进行排序,然后获取最小/最大值。我以前的回答并没有找到重复项,所以我更新了这个副本以查找任何重复项并将字符串模板格式化为:
var maxScore = [];
maxScore.push({
name: 'English',
score: 69
});
maxScore.push({
name: 'Math',
score: 98
});
maxScore.push({
name: 'Art',
score: 95
});
maxScore.push({
name: 'Science',
score: 98
});
maxScore.push({
name: 'History',
score: 69
});
function getMax(array){
let highScores = [];
array.sort((a,b) => a.score - b.score);
highScores.push(array[array.length-1]);
for (let i=0; i<array.length-1; i++){
if (highScores[0].score === array[i].score){
highScores.push(array[i]);
}
}
return highScores;
}
function getMin(array){
const lowScores = [];
array.sort((a,b) => a.score - b.score);
lowScores.push(array[0]);
for(let i=1; i<array.length; i++){
if (lowScores[0].score === array[i].score){
lowScores.push(array[i]);
}
}
return lowScores;
}
const highScore = getMax(maxScore);
let highScoreEl = document.getElementById("resultHigh");
for (i in highScore){
highScoreEl.textContent += `${highScore[i].name}: ${highScore[i].score}, `;
}
const lowScore = getMin(maxScore);
let lowScoreEl = document.getElementById("resultLow");
for (i in lowScore){
lowScoreEl.textContent += `${lowScore[i].name}: ${lowScore[i].score}, `;
}
&#13;
<p id="resultHigh">Your Highest Score: </p>
<p id="resultLow">Your Lowest Score: </p>
&#13;
答案 1 :(得分:0)
首先,您需要将maxScore
从对象数组转换为数字数组。您可以使用Array.prototype.map()
来做到这一点。
然后,您需要找到该数组中最大和最小的数字。您可以使用Math.max()
和Math.min()
来完成此操作。
最后,根据这两个数字,您需要找到maxScore
中的最大和最小项目。请使用Array.prototype.filter()
。您将使用Array.prototype.filter()
两次,首先找到最大的项目,然后再找到最小的项目。
我将代码保留为练习。