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.
Что не так с данной проверкой??

bes 12.04.2012 22:19

Кто-нибудь знает как осуществлять такие проверки??

bes 13.04.2012 21:02

Товарищи, профессора, нужно создать новую тему что ли, чтобы получить ответ, или просто никто не знает решения (тогда понятно)??

9xakep 13.04.2012 21:56

bes,
да, создай новую тему, а не устраивай некролог, опиши суть задачи, я не собираюсь читать все предыдущие посты

bes 13.04.2012 23:16

9xakep, спасибо и на этом, теперь хоть понятно, что дальше делать

Mel 10.09.2012 14:31

Цитата:

Сообщение от JsLoveR (Сообщение 43706)
Скриптор,
Ещё примерчик для понимания:

Строковая индексация
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]);
	}
	}

А каким образом может сработать этот код?
В строке «if(index!=mass[i]){alert("Вы выбрали несуществующий элемент")}» вы сравниваете index со значением только первого элемента массива. Результат может быть положительным лишь в случае набора в prompt'овой строке: "Яблоки по 10 грн за кг".

bes 10.09.2012 14:44

хорошая тема, в ней я узнал, что некропостить надо с умом :D

bes 10.09.2012 18:00

Цитата:

Сообщение от Mel
вы сравниваете index со значением только первого элемента массива. Результат может быть положительным лишь в случае набора в prompt'овой строке: "Яблоки по 10 грн за кг".

index - возвращаемая promp-м строка сравнивается с i по счёту элементом массива mass

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


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