Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Функция find для поиска в массиве (https://javascript.ru/forum/misc/28818-funkciya-find-dlya-poiska-v-massive.html)

Hekumok 04.06.2012 00:54

Функция find для поиска в массиве
 
Итак, здравствуйте =)
Мне нужно создать функцию find (arr, value), которая ищет в массиве arr значение value и возвращает его номер, если найдено, или -1, если не найдено.
Вот что получилось (без вывода -1, если не найдено):
var massive = [2, 'crack', 'find', 2] ;
var mass = [5, 'al', 1] ;
var b = function(arr, value) {
for (var i = 0; i < arr.length; i++) {
if (value == arr[i]) {alert(i)}
else if (value !== arr[i]) {continue} } ;
} ;
b(massive, 2) ; // 0, 3
b(mass, 'al') ; // 1
b(mass, 2) ; //
b(massive, 'al') ; //
Вот, всё норм, выводит номер, если значение есть. Но у меня никак не получается сделать, чтобы, если значение не найдено, выводило -1, уже несколько способов перепробовал, результат - нулевой, либо выводит -1 после каждого вызова функции =( помогите, плиз

dmitriymar 04.06.2012 00:59

Else не нужно. При нахождении соответствия ставь еще флаг. По окончанию цикла - если флаг не установлен значит алерт -1

Hekumok 04.06.2012 01:04

простите, дмитрий, else я сделал, т.к. я там мудрил с этим -1, и убрать забыл...а что такое "флаг" я не знаю...объясните, плиз =)

dmitriymar 04.06.2012 01:14

Флаг - просто любая переменная принимал щадя опр значение при выполнении условия

Deff 04.06.2012 01:14

<script type="text/javascript">
 var Arr_1 = [2, 'crack', 'find', 2];

 function Find_El_Array ( arr, val ) {	
   for(var i in arr) {if (val == arr[i]) return i; }
   return false; 
 }

 alert( Find_El_Array (Arr_1, 2) )
 alert( Find_El_Array (Arr_1, 1) )

</script>


Дубово - но стандартно

Hekumok, Ксать - Вопрос - если в массива два совпадения ?

Hekumok 04.06.2012 01:19

дмитрий, а, ну я так и делал, но у меня там выводило -1 после каждого вызова функции! Может, я просто что-то не так делал...если нетрудно, можно скрипт?

Deff 04.06.2012 01:23

Hekumok,
:) Мой не подошел ? (там false вместо -1
-1 может быть в массиве - если нет поменяйте false на -1

Hekumok 04.06.2012 01:23

Deff, если в массиве 2 совпадения, то нужно чтобы выводило номер каждого!
И Ваш скрипт хорош =) но мне нужно, чтобы если совпадений нет, то выводило -1

Hekumok 04.06.2012 01:24

Deff, спасибо, попробую =)

Deff 04.06.2012 01:24

Hekumok,
Т.е на выходе должен быть массив ?


Часовой пояс GMT +3, время: 03:21.