我编写了此函数,该函数返回-1
。
function sayHello() {
let arrayEdificiosNiveis = [11,10,10];
var indexMenor = arrayEdificiosNiveis.indexOf(Math.max(arrayEdificiosNiveis));
console.log(indexMenor);
}
sayHello();
我期望为0,而不是-1。我该如何解决这个问题?
答案 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();