Как написать функцию, которая находит индекс наибольшего целого числа в массиве?

1

Я пытаюсь написать функцию, которая найдет индекс наибольшего числа в массиве, но моя текущая функция нарушена наличием отрицательных чисел в массиве. Вот код, который у меня есть.

export let maxIndex = (a: number[]): number => {
    let biggest = -9000000000; // use to keep track of largest element
    if (a.length === 0) {
        return -1;
    } else {
        for (let i = 0; i < a.length; i++) {
            if (a[i] > biggest) {
                biggest = a[i]; 
            }
        }

    }
    return a[biggest]; 
};
Теги:
arrays
function

1 ответ

0
Лучший ответ

Ваше 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]));

Ещё вопросы

Сообщество Overcoder
Наверх
Меню