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)

Deff 04.06.2012 01:29

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

 function Find_El_Array ( arr, val ) {
   var array_OUT = [];
   for(var i in arr) {if (val == arr[i]) array_OUT.push(i);}
   if(array_OUT.length) return array_OUT;
   return -1; 
 }

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

</script>

Hekumok 04.06.2012 01:34

Deff, попробовал ваш скрипт, вставив -1 вместо false, вывело почему-то три нуля:

var massive = [2, 'crack', 'find', 2] ;
var mass = [5, 'al', 1] ;
function find(arr, val) {
for (var i in arr) {
if (value = arr[i]) return i ;}
return -1 ; } ;
alert(find(massive, 2)) ;
alert(find(mass, 'al')) ;
alert(find(mass, 2)) ;
alert(find(massive, 'al')) ;

Hekumok 04.06.2012 01:37

Deff, нет, на выходе массив не нужен...нужно просто, чтобы через alert вывело номер значение, если есть совпадение, если 2 совпадения, то должно быть 2 алерта с номерами, а если нет совпадений, то должно вывести -1

Deff 04.06.2012 01:37

Hekumok,

Три 0 занчит три элемента первых в списке - Первый элемент 0 -номер

массивы начинаются с 0

Deff 04.06.2012 01:39

Цитата:

Сообщение от Hekumok
Deff, нет, на выходе массив не нужен...нужно просто, чтобы через alert вывело номер значение, если есть совпадение, если 2

Если есть совпадения - То выводится массив Номеров совпадений

к примеру
1, 2, 3 (Совпали
----------------------
можно сделать строку цифр через запятую, но тогда вам придется цифры вычленять из строки

в так перебираете массив ответных совпадений в цикле

Hekumok 04.06.2012 01:41

Deff, да я знаю, что с нуля элементы начинаются, но с такими массивами
var massive = [2, 'crack', 'find', 2] ;
var mass = [5, 'al', 1] ;
должно было вывести
alert(find(massive, 2)) ; // 0, 3
alert(find(mass, 'al')) ; // 1
alert(find(mass, 2)) ; // -1
alert(find(massive, 'al')) ; // -1

Deff 04.06.2012 01:44

Hekumok,
Первый код был расчитан на одно совпадение(У Всех) - подставляйте во второй

Короткие имена типа Find - лучше не делать - подобные операторы часто есть в библиотеках

Hekumok 04.06.2012 01:44

Deff, лучше бы конечно, чтобы через "алерт" выводило каждое совпадение, но можно и как вы предложили с новым массивом

Hekumok 04.06.2012 01:45

Цитата:

Сообщение от Deff (Сообщение 178629)
Hekumok,
Первый код был расчитан на одно совпадение(У Всех) - подставляйте во второй

Не понял чё-та...

Deff 04.06.2012 01:46

Hekumok,
Пост 12


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