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

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

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]; 
};

1 Ответ

0 голосов
/ 23 октября 2018

Ваш 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]));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...