如何使用 filter()、map() 处理数组的值? JavaScript

Posted

技术标签:

【中文标题】如何使用 filter()、map() 处理数组的值? JavaScript【英文标题】:How to use filter(), map() to work with values fo an array? JavaScript 【发布时间】:2022-01-21 10:02:45 【问题描述】:

我的任务是:

实现函数duplicateStudents(),获取变量 “学生”和具有相同预科的学生的过滤器 数字。首先,通过预科投射学生的所有元素 数字。之后,您可以相对轻松地过滤重复项。在 使用以下格式的最终​​项目: matrikelnummer: (matrikelnummer), 学生: [ (students[i], students[j], ... ) ] .

实现 invalidGrades() 函数,获取变量“grades” 并过滤可能不正确的笔记。例如,为了 保持手动检查尽可能低,该功能应确定 为其传输了几个年级的入学人数 相同的课程。示例:对于入学编号 X,一个 2. 7 和一个 2。 为课程 Y 传输了 3 个。但是,该功能也需要 考虑到有效的情况,我。 e.对于入学编号 X,一次 课程 Y 传输 5,0 和一次 2,3。

在此任务中,您应该只使用 map()、reduce() 和 filter()。不要 实现for循环。

function duplicateStudents(students) 
  return students
    // TODO: implement me


function invalidGrades(grades) 
  return grades
    .map((s) => 
      // TODO: implement me

      return 
        matrikelnummer: -1/* put something here */,
        grades: []/* put something here */,
      ;
    )
    .filter((e) => e.grades.length > 0)

我在单独文件中的变量学生和成绩。我知道上传文件也可能会有所帮助,但一个是 1000 行长,另一个是 500 行。这就是我不上传它们的原因。但我希望可以在没有价值观的情况下完成任务。重要的是,这些值表示为数组

【问题讨论】:

How do I ask and answer homework questions? 【参考方案1】:

我会给你一个在 duplicateStudents 上使用 reduce 的例子,它不会返回预期的格式,但你可以从那里开始。

const duplicateStudents = (students) => 
  const grouping = students.reduce((previous, current) => 
    if (previous[current.matrikelnummer]) previous[current.matrikelnummer].push(current); // add student if matrikelnummer already exist
    else previous[current.matrikelnummer] = [current];
    return previous;
  , );

  console.log(grouping);
  
  return //you could process `grouping` to the expected format in here
;

以下是您的偏好:

map filter reduce

【讨论】:

以上是关于如何使用 filter()、map() 处理数组的值? JavaScript的主要内容,如果未能解决你的问题,请参考以下文章

map方法,以及filter方法的使用

关于map some filter every 一些临时记忆

ES5新增 数组操作forEach()map()filter()some()every()

ES5新增 数组操作forEach()map()filter()some()every()

Map,filter总结

通过使用 Map Filter 与对象数组进行比较来返回字段