[英]how to find multiple index values of an array to call on another array, javascript
這是我到目前為止所得到的。 我有兩個數組,我找到了數值數組“等級”的條件值(等級 >= 60),我現在試圖找到與那些 >= 60 的數組值對應的索引值,以便然后我可以在另一個數組“姓名”上調用這些索引以返回與及格成績相對應的學生“姓名”。
非常感謝任何指針或提示,謝謝。
let total = 0;
let highest = 0;
let stuAvg= 0;
let arr = [];
var names= [];
var grade= [];
var pos1 = [];
for (var i = 0; i < 10; i++) {
names.push(prompt('Enter The Ten Student Names | Student: ' + (i + 1)));
document.getElementById("stuNames").innerHTML=("Student's Names:" +names.join(','));
}
for (var i = 0; i < 10; i++) {
grade.push(Number(prompt('Enter The Ten Student Grades | Grade: ' + (i + 1))));
total +=grade[i];
stuAvg = total / grade.length;
highest = Math.max(...grade);
document.getElementById("stuGrades").innerHTML=("Student's Grades:" +grade.join(','));
}
function passing(grade) {
return grade >= 60;
}
function results() {
pos1 = grade.indexOf(highest);
arr = grade.filter(passing);
document.getElementById("result").innerHTML=("Highest Grade:"+highest+"The Highest Grade
Belongs to:"+names[pos1]+" The Average Grade is "+stuAvg+"");
document.getElementById("passing").innerHTML=("The Students who are passing are
"+arr+","+names+"");
}
在這一行之后:
total +=grade[i];
如果是及格成績,則將該學生的索引添加到passingGradeIndexes 數組中:
if (passing(grade[i])) passingGradeIndexes.append(i);
然后輸出名稱:
for (var i = 0; i < passingGradeIndexes.Length; i++) {
document.Write( names[passingGradeIndexes[i]] );
}
執行過濾器時,您可以將這些索引存儲在另一個數組中。
function results() { pos1 = grade.indexOf(highest); var passingStudents = []; // to store passing indexes arr = grade.filter((grade, index) => { var pass = grade >= 60; if(pass){ passingStudents.push(index); } return pass; }); passingStudents = passingStudents.map(index => names[index]); // change indexes for names document.getElementById("result") .innerHTML=("Highest Grade:"+highest +"\\n The Highest Grade Belongs to:"+names[pos1] +"\\nThe Average Grade is "+stuAvg+""); document.getElementById("passing") .innerHTML=("The Students who are passing are: " + passingStudents.join(", ")); }
現在您在另一個數組中擁有了所需的索引。
它說你是一個新的貢獻者。 歡迎來到社區。 這里有一些關於如何改進代碼的提示。
雖然一些公認的技術術語和既定做法是縮寫的,例如HTML
、 CSS
和XHR
,但不要在代碼中縮寫students
詞。 縮寫的做法來自於計算機內存有限且屏幕很小的時代,在那里你只能輸入每行大約一百個字符之類的東西。
我認為您要做的是輸入學生的姓名和成績,並對其進行一些靜態分析,對嗎? 如果是這樣,您可以將代碼編寫如下:
function getStudentNames() { /* write your code here */ }
function getStudentGrades() { /* write your code here */ }
function analyse(students, grades) { /* write your code here */ }
function renderResults(analysis) { /* write your code here */ }
// and then run the whole thing here:
function main() {
var students = getStudentNames()
var grades = getStudentGrades()
var analysis = analyze(students, grade)
renderResults(analysis)
}
有了這個結構,我們只需要擔心為每個函數填寫/* write your code here */
的部分。 這只是您可能希望如何構建代碼的一個示例。 正如您稍后將在您的開發者之旅中了解到的那樣,這使得以后的測試更容易。
一般來說,當你命名一個函數時,你希望以如下格式命名: verbNoun()
。 例如,您可能會看到fetchData()
、 renderImage()
、 getShape()
等函數。有時您會看到不遵循此規則的函數,例如then()
或render()
。 在任何情況下,都不要使用名詞作為函數名。
雖然使用 for 循環有一些優勢,但對於大多數情況,性能提升可以忽略不計,而使用數組方法提供了清晰性和可讀性。
例如,總結一個數字數組可以實現如下:
var sum = [0,1,2,3,4].reduce(function(current, sum) {
return current + sum
}, 0)
// more modern
const sum = [0,1,2,3,4].reduce((current, sum) => current + sum, 0)
console.log(sum) // prints 10
可以在Mozilla Developers Network找到有用的內容,這通常是學習任何與 Web 相關的內容的極好來源。
——
我希望這有幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.