当前位置: 首页 > 知识库问答 >
问题:

为什么过滤方法不能正常工作?

钦宏义
2023-03-14

我试图在一个变量中保存得分为80分或80分以上的学生的姓名,但我无法使用filter进行保存,它返回整个对象,尽管我指定只打印这些对象的键值,即这些学生的姓名。

我的代码:

// Students names/scores
let students = [
    {name: "Ahmed" , score: 84},
    {name: "Samira" , score: 69},
    {name: "Dana" , score: 75},
    {name: "Basil" , score: 100},
    {name: "Fahad" , score: 91},
    {name: "Aljawhara" , score: 80},
    {name: "Fadi" , score: 70},
]


// Students who scored 80 or more using filter
let studentsScoredMoreThan80 = students.filter((item,index,array) => {
    if(item.score >= 80) return item.name;
})
console.log(studentsScoredMoreThan80);

我怎样才能得到得分在80分以上的学生的名字?

共有3个答案

胡高朗
2023-03-14

Array.filter中回调的返回值转换为布尔值,如果item.score

濮阳景天
2023-03-14

Filter 从数组中删除元素 从数组开始,根据条件仅保留其部分元素,然后返回新数组,保留原始数组不变。它没有别的作用。它期望truefalse作为返回值(表示保留或放弃),但您返回的是项。name(这是truthy,因此它的工作原理类似于true)。

然后,您需要使用map将完整的学生对象转换为字符串(它们的名称):

let students = [
    {name: "Ahmed" , score: 84},
    {name: "Samira" , score: 69},
    {name: "Dana" , score: 75},
    {name: "Basil" , score: 100},
    {name: "Fahad" , score: 91},
    {name: "Aljawhara" , score: 80},
    {name: "Fadi" , score: 70},
]


// Students who scored 80 or more using filter
let studentsScoredMoreThan80 = students
                                  .filter(student => student.score > 80)
                                  .map( student => student.name);

console.log(studentsScoredMoreThan80)
夏雅志
2023-03-14

过滤器只是过滤列表,它不会将列表项投影到新结构中。

您要查找的是过滤器映射的组合。首先筛选您的列表:

let studentsScoredMoreThan80 = students.filter(item => item.score >= 80);

然后将结果映射到所需的新结构:

studentsScoredMoreThan80 = studentsScoredMoreThan80.map(item => item.name);
 类似资料:
  • 我正在使用Java NIO,由于某种原因,我无法获得files.isHidden()来返回正确的布尔值。程序只是检查目录是否隐藏,如果隐藏,则使其可见,如果不隐藏,则使其隐藏。这就是我所拥有的: 它继续返回false并隐藏目录,尽管目录被隐藏。下面的代码使用旧的File类和Path类可以很好地工作。

  • 我一直在用SceneBuilder 9.0.1在IntelliJ上做一个项目。昨天,在NetBeans 8上做了一个小型项目,12之后由于某种原因没有启动新项目。一旦关闭所有内容并打开IntelliJ项目,fxml文档就无法使用SceneBuilder打开。对于这个问题,需要注意以下几点: 我使用的是9.0.1版,尽管v15也有同样的问题, 其中一个fxml文件的示例如下: 请帮助。

  • 我正在尝试制作一个简单的Pygame应用程序,其中一些颜色与它们下面的颜色混合。以下是我的代码: 代码列表1: 代码应该使黄色矩形与橙色矩形混合,蓝色矩形与绿色矩形混合。相反,我从中得到了一些东西: 对此: 正如你所看到的,黄色和蓝色矩形不仅与红色矩形(屏幕表面)相融合,而且还为橙色和绿色矩形开了一个洞,这样我们就可以通过它们看到红色矩形。

  • 问题内容: 作为回答另一个问题的一部分,我编写了以下代码,乍看之下其行为似乎很奇怪: 谁能解释这个奇怪的行为?我认为这与Python的对象模型有关,但我不确定。 Cygwin下的版本2.5.2。 问题答案: Python具有这两个(以及其他)内置对象。它们只是对象。刚开始时,它们还没有任何名称,但是要知道我们指的是什么,我们将它们称为和。 在开始执行Python(2.x)脚本之前,该名称已绑定到该

  • 我正在为我的android乞丐项目创建一个1对1扑克芯片计数器应用程序。当我按下任何调用displayBetPlayer1或displayBetPlayer2的按钮(+、-、Bet/Rise)时,我会收到一个运行时错误,所以我知道问题出在这些方法上。我还看到导入语句有一些不对劲的地方,但我对此太陌生,不明白是什么。有人知道问题出在哪里吗?(我将在注释中发布activity_main.xml,因为它

  • 问题内容: 看来AngularJS的不起作用。它不适用于数字字符串。难道我做错了什么?我应该使用吗? 我需要一些东西来查看字符串是否是一个数字(实际上是一个数字),除非我乘以1,否则我不会这么做,但是如果我这样做,那么它将始终为真。另外是不是一个数字(定义)等应该返回false。 问题答案: 在 JavaScript中 ,。 例如,如果需要将 字符串 识别为 Number ,则将其转换为 Numb