_.indexOf(array, value, [fromIndex=0])
Получает индекс, по которому первое вхождение value
находится в array
, используя SameValueZero
для сравнения на равенство. Если fromIndex
отрицательное, оно используется как смещение от конца array
.
Полную документацию по этому методу смотрите здесь.
Это последнее предложение было первым, что бросило меня в тупик во время тестирования. Моя первоначальная мысль заключалась в том, что они имели в виду что-то вроде операции по модулю, но когда я тестировал индексы за пределами длины массива, исходный _.indexOf
вернул бы -1 (для входных данных, превышающих длину массива) или 0 (для отрицательных входных данных, меньших, чем длина массива). обратная длина массива). Истинный модуль будет продолжать цикл вокруг длины массива, т. е. начальный индекс -4 в массиве, длина которого равна 3, должен возвращать индекс 3, -5 должен возвращать 2, -6 должен возвращать 1 и т. д. on … скорее _.indexOf
вернул 0 во всех этих случаях.
Я немного схитрил и перепроверил, как они справляются с этим, и в итоге скопировал их решение в свою реализацию.
Видите эту закомментированную строку, где я проверяю тип индекса? Я просто оставляю это, чтобы рассказать о NaN
и о том, как меня расстроило осознание того, что его тип на самом деле является числом. Потребовалось много гугления, прежде чем я понял, почему мои тестовые примеры терпели неудачу. На самом деле, вот хорошая статья Киро Риска, которую я добавил в закладки по этому поводу.
Помимо этих проблем, этот метод был прост в реализации. Всегда приятно наблюдать за прохождением всех ваших тестовых случаев. Как всегда, вы можете увидеть их на GitHub здесь.