Принцип работы цикла for
Здравствуйте. Начал изучать js и немного не понимаю почему указаный ниже код выводит число 2. По идее он должен перебирать и алертить все значения массива (в данном случае я ожидал вывода -1, -1, 2, -1),а он выводит только одно число 2.Объясните, пожалуйста, почему.
function find(array, value) { for(var i=0; i<array.length; i++) { if (array[i] == value) return i; } return -1; } var arr = ["a", -1, 2, "b"]; var index = find(arr, 2); alert(index); |
stp008,
Функция find ищет элемент value в массиве array и возвращает его индекс. В данном случае вы ищите число 2 в массиве ['a', -1, 2, 'b']. Это число расположено на 3-ем месте. Т.к. индексация массива начинается с 0, переменная index принимает значение 2. |
Спасибо за ответ, но я немного не то имел ввиду. Я не понимаю, помечу выводится одно число,а не 4. Файнд перебирает значения и, если совпадает, выводит индекс,а если нет, то -1. Соотвественно я ожидал в алерте увидеть [-1, -1, 2, -1] (при 0 индексе искомый элемент не найден, соотвественно возвращает -1, на втором не найден - возращает -1 и т.д.). А в на самом деле алертит одинокое число 2. Я это не могу понять, к сожалению.
|
stp008,
1) Функция вызывается 1 раз. За 1 раз любая функция может вернуть только 1 значение (не считая массивы и объекты) 2) return выходит из функции. Как только было совпадение, цикл перестаёт работать и функция возвращает значение 3) Если вы всё же хотите получить несколько значений, то function find(array, value) { var res = []; for(var i=0; i<array.length; i++) { if (array[i] == value) res[i] = i; else res[i] = -1; } return res; } var arr = ["a", -1, 2, "b"]; var index = find(arr, 2); alert(index); В этом примере функция find собирает результаты в массив и возвращает уже не одно значение, а массив. |
Спасибо большое)
|
Часовой пояс GMT +3, время: 13:18. |