首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用For-循环从旧数组返回新数组?

如何使用For-循环从旧数组返回新数组?
EN

Stack Overflow用户
提问于 2022-01-13 13:19:29
回答 3查看 94关注 0票数 1

我有一组来自两种不同评分系统的学生。

First评分系统 One评分系统定义为1-5年级,其中3级及以上意味着您通过了课程。

二级系统其他等级系统的A级、A-级、B级、B级、C级、C级,其中A级为最高等级,C级为最低及格级。

给定以下数组allStudents表示所有学生及其成绩的任务,我将尝试构建一个新的数组studentsWhoPass,其中包含所有通过考试的学生。

设allStudents = 'A','B-',1,4,5,2

设studentsWhoPass = [];

我已经尝试过的

代码语言:javascript
复制
let allStudents = [
    'A',
    'B-',
    1,
    4,
    5,
    2
  ]
  
  let studentsWhoPass = [];

  for (let i = 0; i < allStudents.length; i++) {
    if (allStudents >= 'A' && allStudents > 3) {
        return studentsWhoPass.push(allStudents);
    }
  }

任何帮助都将不胜感激。

EN

回答 3

Stack Overflow用户

发布于 2022-01-13 13:31:52

几个问题

循环中的

  • 返回将停止循环。在循环中不需要它,在映射或过滤器中需要它,并且不允许在函数

之外使用它。

  • 您需要使用i

访问该项

  • 你有字母和数字的混合。你需要分别对待他们,

  • “B.”“A.”所以我们需要测试实际的字符串

这里我用isNaN测试字母(不是数字)

它传递所有字母> C-和所有数字>= 3

代码语言:javascript
复制
const allStudents = [ 'A','A-','B-',1,4,5,2 ];

const getPassingStudents = () => allStudents
  .filter(student => {
    if (isNaN(student)) 
      return "ABC".includes(student.slice(0,1)) && student != "C-";
    return student > 3;
});    
    

console.log(
  getPassingStudents()
)

票数 0
EN

Stack Overflow用户

发布于 2022-01-13 13:37:27

代码语言:javascript
复制
let allStudents = [
    'A',
    'B-',
    1,
    4,
    5,
    2
  ]
  
  let studentsWhoPass = [];

  for (let i = 0; i < allStudents.length; i++) {
    if (allStudents[i] == 'A' || allStudents[i] == 'B' || allStudents[i] == 'C' || allStudents[i] == 'A-' || allStudents[i] == 'B-' || allStudents[i] > 3) {
        studentsWhoPass.push(allStudents[i]);
    }
  }
console.log(studentsWhoPass);

备注:-

studentsWhoPass.push(allStudents[i]);

  • In letters

  • Also,返回语句只能存在于函数之外的任何函数中,您只需更新并将值推送到数组

  • 中--您试图将整个数组推送到这里--我们只需将数组中的元素推送到数组中,例如if语句,检查整个数组是否满足某一特定条件,但您必须检查与上面的示例

  • 相同的元素以检查字符,我们可以使用ASCII代码进行检查,但这可能会变得很混乱,为了简单起见,我们将检查单个letters

  • Also,。我们使用的不是&&(和)运算符,而是||(或)运算符,这样每个元素的每个条件都不必为真,但至少有一个条件应为true

我想这会解决你的问题,谢谢!

票数 0
EN

Stack Overflow用户

发布于 2022-01-13 13:42:57

我建议创建一张每个年级的地图以及相应的分数,然后使用Array.filter()很容易地过滤3分或以上的学生

代码语言:javascript
复制
let allStudents = [ 'A', 'B-', 1, 4, 5, 2, 'C-' ]
  
// One can customize as necessary..
let gradeMap = { 'A': 7, 'A-': 6, 'B': 5, 'B-': 4, 'C': 3, 'C-': 2};

const passingScore = 3;

function studentPassed(input) {
    return (gradeMap[input] || input) >= passingScore;
}

let studentsWhoPass = allStudents.filter(studentPassed)
console.log('Passing students:', studentsWhoPass)
代码语言:javascript
复制
.as-console-wrapper { max-height: 100% !important; top: 0; }

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70697304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档