Javascript 为什么不是';";findIndex“;找到我的第一个匹配数组元素?

Javascript 为什么不是';";findIndex“;找到我的第一个匹配数组元素?,javascript,arrays,find,Javascript,Arrays,Find,在我的Firefox web控制台上,我输入以下JS const scoreTierMins = [90, 70, 50, 30, 10, 0]; const pctScore = 75; 我想找到“scoreTierMins”数组中大于或等于“pctScore”的第一个元素的索引。所以我试过这个 scoreTierMins.findIndex(function(el) {el >= pctScore}); 但我得到的结果是“-1”。我还缺什么?结果不应该是“1”,因为“70”是

在我的Firefox web控制台上,我输入以下JS

const scoreTierMins = [90, 70, 50, 30, 10, 0]; 
const pctScore = 75; 
我想找到“scoreTierMins”数组中大于或等于“pctScore”的第一个元素的索引。所以我试过这个

scoreTierMins.findIndex(function(el) {el >= pctScore}); 
但我得到的结果是“-1”。我还缺什么?结果不应该是“1”,因为“70”是匹配条件的第一个元素吗?

您没有返回比较结果。尽管将表达式
el>=pctScore
放在函数体中,但没有返回语句,它只是一个不做任何操作且其值被丢弃的表达式。就好像你写了这个函数:

function compareElements(el) {
  el >= pctScore;
}
当你把它写出来的时候,应该很清楚它没有做任何事情

相反,返回如下条件:

const scoreTierMins=[90,70,50,30,10,0];
常数pctScore=75;
let index=scoreTierMins.findIndex(函数(el){return el>=pctScore});

控制台日志(索引)findIndex回调函数应返回一个布尔值。在您的情况下,返回条件。

您缺少一个
return
.aka:
scoreTierMins.findIndex(el=>el>=pctScore)
而且结果应该是0,而不是1。只需使用lambda表达式,或者使用新行来显示它们需要返回的原因。只是把它放在那里并没有指出他们试图在一行上写所有内容的错误。@Mr.polywhill我确实建议在代码段下使用arrow函数。在引入固定代码之前,我也指出了第一段中的错误,但我接受了您的建议,以完整的形式写出函数,以表明它看起来不正确。