如何使用JavaScript获取数组中最小值的索引?

时间:2019-04-14 15:47:13

标签: javascript arrays min

我编写了此函数,该函数返回-1

function sayHello() {
  let arrayEdificiosNiveis = [11,10,10];
  var indexMenor = arrayEdificiosNiveis.indexOf(Math.max(arrayEdificiosNiveis));
  console.log(indexMenor);
}
sayHello();

我期望为0,而不是-1。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

您需要扩展阵列以获取最大值。否则,您将获得NaN作为值(通过字符串数组),并且该值不在数组中(并且不可搜索)。

展开的数组将所有元素作为函数(spread syntax ...)的参数。

在这种情况下,它是按照这种方式

Math.max(...[11, 10, 10])

被评估为

Math.max(11, 10, 10)

function sayHello() {
  arrayEdificiosNiveis = [11, 10, 10];
  var indexMenor = arrayEdificiosNiveis.indexOf(Math.max(...arrayEdificiosNiveis));
  
  console.log(indexMenor);
}

sayHello();

答案 1 :(得分:0)

您的方法遇到的问题是您要传递给函数Math.max的完整数组:

var arrayEdificiosNiveis = [11,10,10];
console.log(Math.max(arrayEdificiosNiveis));

如果无法使用Spread syntax,则可以调用函数apply,该函数接收一个数组作为函数Math.max的参数

function sayHello() {
  var arrayEdificiosNiveis = [11,10,10];
  var indexMenor = arrayEdificiosNiveis.indexOf(Math.max.apply(null, arrayEdificiosNiveis));
  console.log(indexMenor);
}
sayHello();