Основная проблема, которую я вижу, что вы не вырывались из цикла, когда вы найдете неотрицательное значение. Это можно сделать с помощью инструкции break
, или если вы хотите немедленно выйти из функции, оператор return
.
Функция должна выглядеть немного так:
function findNonNegative(arry) {
for (var i = 0, len = arry.length; i < len; i++) {
if(arry[i] >= 0)
return i;
}
return -1;
}
Обратите внимание, что этот метод возвращает -1
если не неотрицательные элементы не найдены.
И с небольшой настройки, это может быть сокращен до:
function findNonNegative(arry) {
for (var i = 0; arry[i] < 0; i++);
return i < arry.length ? i : -1;
}
Эта версия использует поведения петли for
обоим проверить наши ценности внутри цикла и вспыхнет один раз желаемое значение найденный. Это также зависит от того, что x < y
всегда возвращает false, если x
- undefined
, что гарантирует, что мы не закончим бесконечный цикл. Последнее условное выражение заключается в том, чтобы сделать возвращаемое значение равным -1
, если не было найдено неотрицательных элементов; который может быть уменьшен до return i;
, если вы в порядке с возвратным значением arry.length
в этом случае.
отлично - если я хочу подать это, то я могу получить соответствующий другой массив (называемый список), могу ли я назвать это как список [getFirstNegative (arr)]? – user3213563
Yep - просто убедитесь, что вы придерживаетесь этого в функции. Проверьте мое обновление. – linstantnoodles
Добавили еще одно обновление! – linstantnoodles