簡體   English   中英

如何找到一個數組的多個索引值來調用另一個數組,javascript

[英]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(", ")); }

現在您在另一個數組中擁有了所需的索引。

它說你是一個新的貢獻者。 歡迎來到社區。 這里有一些關於如何改進代碼的提示。

1. 不要縮寫

雖然一些公認的技術術語和既定做法是縮寫的,例如HTMLCSSXHR ,但不要在代碼中縮寫students詞。 縮寫的做法來自於計算機內存有限且屏幕很小的時代,在那里你只能輸入每行大約一百個字符之類的東西。

2.使用函數並命名好

我認為您要做的是輸入學生的姓名和成績,並對其進行一些靜態分析,對嗎? 如果是這樣,您可以將代碼編寫如下:

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() 在任何情況下,都不要使用名詞作為函數名。

3. 學習(更多)數組方法。

雖然使用 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM