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

如何找到一个数组的多个索引值来调用另一个数组javascript,javascript,arrays,indexof,Javascript,Arrays,Indexof,这是我到目前为止得到的。我有两个数组,我找到了一个数字数组“grade”(grade>=60)的条件值,我现在试图找到与那些数组值>=60对应的索引值,这样我就可以调用另一个数组“names”上的这些索引,以返回与及格分数对应的学生的名字 非常感谢您的指点或提示 let total = 0; let highest = 0; let stuAvg= 0; let arr = []; var names= []; var grade= []; var pos1 = []; for (

这是我到目前为止得到的。我有两个数组,我找到了一个数字数组“grade”(grade>=60)的条件值,我现在试图找到与那些数组值>=60对应的索引值,这样我就可以调用另一个数组“names”上的这些索引,以返回与及格分数对应的学生的名字

非常感谢您的指点或提示

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+"");     
}
让总数=0;
设最高值=0;
设stuAvg=0;
设arr=[];
变量名称=[];
var等级=[];
var pos1=[];
对于(var i=0;i<10;i++){
name.push(提示('输入十个学生姓名|学生:'+(i+1)));
document.getElementById(“stuNames”).innerHTML=(“学生姓名:”+Names.join(“,”));
}
对于(var i=0;i<10;i++){
grade.push(数字(提示('输入十个学生成绩|成绩:'+(i+1)));
总数+=等级[i];
stuAvg=总长度/等级长度;
最高=数学最大值(…等级);
document.getElementById(“stuGrades”).innerHTML=(“学生成绩:”+grade.join(“,”));
}
功能通过(等级){
返回等级>=60;
}
函数结果(){
pos1=等级指数(最高);
arr=等级过滤器(通过);
document.getElementById(“结果”).innerHTML=(“最高等级:“+Highest+”最高等级
属于:“+names[pos1]+”平均成绩为“+stuAvg+”);
document.getElementById(“通过”).innerHTML=(“通过的学生是
“+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]] );
}
for(var i=0;i
执行筛选时,您可以将这些索引存储在另一个数组中

函数结果(){
pos1=等级指数(最高);
var passingStudents=[];//用于存储传递的索引
arr=等级。过滤器((等级,索引)=>{
var通过=等级>=60;
如果(通过){
passingStudents.push(索引);
}
回程通行证;
});
passingStudents=passingStudents.map(index=>names[index]);//更改名称的索引
document.getElementById(“结果”)
.innerHTML=(“最高级别:”+最高级别
+“\n最高等级属于:”+名称[pos1]
+“\n平均成绩为“+stuAvg+”);
document.getElementById(“传递”)
.innerHTML=(“通过考试的学生是:”+passingStudents.join(“,”));

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

1.不要缩写 虽然一些公认的技术术语和惯例是缩写的,例如
HTML
CSS
XHR
,但不要在代码中缩写
学生
之类的词。缩写的实践来自计算机内存有限、屏幕很小的时代,在这个时代,你每行只能键入大约100个字符

2.使用函数并正确命名它们 我想你要做的是输入学生的名字和成绩,然后对他们进行统计,对吗?如果是这样,您可以按以下方式编写代码:

函数getStudentNames(){/*在此处编写代码*/}
函数getStudentGrades(){/*在此处编写代码*/}
函数分析(学生,成绩){/*在这里写代码*/}
函数renderResults(分析){/*在此处编写代码*/}
//然后在这里运行整个过程:
函数main(){
var students=getStudentNames()
变量等级=getStudentGrades()
var分析=分析(学生、年级)
渲染结果(分析)
}
有了这样的结构,我们只需要为每个函数填写
/*在这里编写代码*/
。这只是您可能希望如何构造代码的一个示例。正如您稍后将在开发人员之旅中了解到的,这使得以后的测试更加容易

一般来说,在命名函数时,您希望以以下格式命名:
verbNoun()
。例如,您可能会看到类似于
fetchData()
renderImage()
getShape()
,等等的函数。有时您会看到不遵循这一点的函数,例如
then()
,或
render()
。在任何情况下,都不要使用名词作为函数名

3.了解(更多)数组方法。 虽然使用for循环有一些优点,但对于大多数上下文,性能提升可以忽略不计,使用数组方法可以提供清晰性和可读性

例如,对一个数字数组求和可以实现如下:

var sum=[0,1,2,3,4]。减少(函数(当前,求和){
返回电流+总和
}, 0)
//更现代
常量和=[0,1,2,3,4]。减少((当前,和)=>当前+和,0)
console.log(sum)//打印10
可以在上找到有用的工具,这通常是学习任何与网络相关的知识的极好来源

--


我希望这有帮助

谢谢杰里米!当我在循环的“grade”中的“total”行之后添加“if”语句时,一旦我输入了高于60的等级,循环的等级提示就会退出循环,而不是运行10个条目。我可以把这一行加在别的地方吗?