Ваш return a[biggest];
возвращает число по индексу самого большого найденного элемента (например, [0, 2, 4, 6]
вернет a[6]
, которое разрешается в undefined
, что не имеет смысла длячто вы пытаетесь достичь).
Вам необходимо отслеживать не только наибольшее число, найденное до сих пор, но также индекс этого последнего найденного наибольшего числа.Кроме того, если вы инициализируете индексную переменную равной -1
, начальный тест if
не требуется:
const maxIndex = (a) => {
let biggestNum = -Infinity; // use to keep track of largest element
let biggestIndex = -1;
for (let i = 0; i < a.length; i++) {
if (a[i] > biggestNum) {
biggestNum = a[i];
biggestIndex = i;
}
}
return biggestIndex;
};
console.log(maxIndex([0, -1, -2]));
console.log(maxIndex([]));
console.log(maxIndex([30, 50, 40]));
Другим методом будет распространение в Math.max
:
const maxIndex = (a) => {
const max = Math.max(...a);
return a.indexOf(max);
};
console.log(maxIndex([0, -1, -2]));
console.log(maxIndex([]));
console.log(maxIndex([30, 50, 40]));