Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проверка массива на наличие элемента (https://javascript.ru/forum/misc/7512-proverka-massiva-na-nalichie-ehlementa.html)

Скриптор 05.02.2010 17:13

Проверка массива на наличие элемента
 
Вопрос простой: «Как проверить массив на наличие конкретного значения или элемента под тем или иным номером или именем?»
Но у меня проблемы, возможно, даже с проверкой на равенство: "==" и "=" нередко путаю :(

Gvozd 05.02.2010 17:40

Цитата:

Сообщение от Скриптор
элемента под тем или иным номером или именем?

сравнить элемент под номером или именем с undefined
если не равен, то существует
Цитата:

Сообщение от Скриптор
конкретного значения

http://javascript.ru/php/in_array
Цитата:

Сообщение от Скриптор
"==" и "=" нередко путаю

Пересадкой мозга не занимаемся.
других идей внешней помощи по этому вопросу не вижу. вам надо только самому запомнить это

PeaceCoder 05.02.2010 17:46

Цитата:

Сообщение от Gvozd
других идей внешней помощи по этому вопросу не вижу. вам надо только самому запомнить это

не в этом дело. я раньше когда сидел на Delphi то тоже путал. Там := присваивание, а = сравнение. В JS же = присваивание, == сравнение

Kolyaj 05.02.2010 17:47

Цитата:

Сообщение от Gvozd
сравнить элемент под номером или именем с undefined

А если там undefined лежит? in нужен.
http://alljs.ru/2009/09/undefined-undefined/

JsLoveR 05.02.2010 18:30

Скриптор,
Ещё примерчик для понимания:
var mass=new Array('яблоко','груша','слива','картофель');
index = parseInt(prompt("Введите индекс массива", 0));
if(index>=mass.length || index<0 || isNaN(index)){alert("Вы выбрали несуществующий элемент")}
else{
alert("Вы выбрали: "+mass[index]);
}

Строковая индексация
var mass=new Array('яблоко','груша','слива','картофель');
mass["яблоко"] = "Яблоки по 10 грн за кг";
mass["груша"] = "Груши по 11 грн за кг";
mass["слива"] = "Сливы по 12 грн за кг";
mass["картофель"] = "Картофель по 9 грн за кг";


for(var i=0;i<mass.length;i++){
var	index = prompt("Введите строковый индекс массива", 'яблоко');
	if(index!=mass[i]){alert("Вы выбрали несуществующий элемент")}
	else{
	alert("Вы выбрали: "+mass[index]);
	}
	}


А вообще:
Цитата:

Сообщение от Kolyaj (Сообщение 43704)
А если там undefined лежит? in нужен.
http://alljs.ru/2009/09/undefined-undefined/

Хорошая статья

Gvozd 05.02.2010 21:15

Цитата:

Сообщение от PeaceCoder
не в этом дело.

вам кто-то помог запомнить это различие?
полагаю, что вы в конце-концов просто привыкли, исписав тысячу-другую строк.
вот, и тут ТС-у никто не поможет.только самому привыкать.
Цитата:

Сообщение от Kolyaj
http://alljs.ru/2009/09/undefined-undefined/

Спасибо большое. не подозревал о такой тонкости

PeaceCoder 05.02.2010 23:29

Цитата:

Сообщение от Gvozd
Спасибо большое. не подозревал о такой тонкости

угумсь. хорошая статья.

Скриптор 09.02.2010 01:20

Спасибо, ребята, реально помогли. И надеюсь не только мне ;)


-----------------

=to=>JsLoveR: Спасибо за примеры и юмор (Предыдущий пример вполне можно было оставить: хотя бы, так сказать, "в копилочку", кому-нибудь да пригодится).

=to=>PeaceCoder: Спасибо за понимание. Кстати, у тебя хорошая подпись!

-----------------

PeaceCoder 09.02.2010 02:05

Цитата:

Сообщение от Скриптор
=to=>PeaceCoder: Спасибо за понимание. Кстати, у тебя хорошая подпись!

Незачто. Относись к людям так же, как хотел бы отношения к себе - хорошая поговорка. Вот кстати ее я ща тоже добалю в подпись Немного опять же перефразировав =)

bes 12.04.2012 00:04

А как насчёт проверок наличия элементов в массивах ссылок, например, таких как children (если я, конечно, правильно понимаю, что данный массив хранит для некоторого элемента ссылки на все его дочерние элементы)?

Например, есть div со ссылкой: div - родительский элемент, ссылка - дочерний.
Нужно, чтобы при уходе мыши с div этот div скрывался, кроме тех случаев, когда уход происходит на его дочерний элемент (ссылку).
Решение, как видится, заключается во фразе "если уходишь не на дочерний элемент, то скрывайся".

Для браузеров с поддержкой target/relatedTarget, код такой.

Код:

<div id=div1 style="background: gray"
  onmouseout = "
    if (!(event.relatedTarget in this.children)) this.style.display = 'none';
">
<a href="">content</a>
</div>

Тем не менее данный код не работает, а event.relatedTarget in this.children всегда равен true.
Что не так с данной проверкой??


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