如何找到一个数组的多个索引值来调用另一个数组javascript



以下是我到目前为止得到的内容。我有两个数组,我找到了一个数字数组"grade"(grades>=60(的条件值,我现在正试图找到与>=60的数组值相对应的索引值,这样我就可以调用另一个数组"names"上的这些索引,以返回与通过成绩相对应的学生"name"。

非常感谢您的任何建议,谢谢。

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];

如果是及格分数,请将该学生的索引添加到及格分数索引数组中:

if (passing(grade[i])) passingGradeIndexes.append(i);

然后输出名称:

for (var i = 0; i < passingGradeIndexes.Length; i++) {
document.Write( names[passingGradeIndexes[i]] );
}

它说你是一个新的贡献者。欢迎加入社区。以下是一些关于如何改进代码的提示。

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开发者网络上可以找到有用的工具,它通常是学习任何与网络相关的东西的绝佳来源。

--

我希望这能帮助

执行筛选时,可以将这些索引存储在另一个数组中。

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

现在,您在另一个数组中拥有了所需的索引。

最新更新