Как получить индекс минимального значения в массиве с помощью JavaScript? - PullRequest
0 голосов
/ 14 апреля 2019

Я написал эту функцию, которая возвращает -1.

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

Я ожидал 0, а не -1. Как мне решить эту проблему?

Ответы [ 2 ]

3 голосов
/ 14 апреля 2019

Вам нужно распределить массив для получения максимума. В противном случае вы получите NaN в качестве значения (через строковый массив), а это не будет в массиве (и не будет доступно для поиска).

Расширяемый массив принимает все элементы в качестве параметра для функции ( расширенный синтаксис ...).

В данном случае это так

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();
0 голосов
/ 14 апреля 2019

Проблема в вашем подходе - полный массив, который вы передаете функции 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();
...