Вход

Просмотр полной версии : Проверка массива на наличие элемента


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

Gvozd
05.02.2010, 17:40
элемента под тем или иным номером или именем?
сравнить элемент под номером или именем с undefined
если не равен, то существует
конкретного значения
http://javascript.ru/php/in_array
"==" и "=" нередко путаю
Пересадкой мозга не занимаемся.
других идей внешней помощи по этому вопросу не вижу. вам надо только самому запомнить это

PeaceCoder
05.02.2010, 17:46
других идей внешней помощи по этому вопросу не вижу. вам надо только самому запомнить это
не в этом дело. я раньше когда сидел на Delphi то тоже путал. Там := присваивание, а = сравнение. В JS же = присваивание, == сравнение

Kolyaj
05.02.2010, 17:47
сравнить элемент под номером или именем с 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]);
}
}

А вообще:
А если там undefined лежит? in нужен.
http://alljs.ru/2009/09/undefined-undefined/
Хорошая статья

Gvozd
05.02.2010, 21:15
не в этом дело.
вам кто-то помог запомнить это различие?
полагаю, что вы в конце-концов просто привыкли, исписав тысячу-другую строк.
вот, и тут ТС-у никто не поможет.только самому привыкать.
http://alljs.ru/2009/09/undefined-undefined/
Спасибо большое. не подозревал о такой тонкости

PeaceCoder
05.02.2010, 23:29
Спасибо большое. не подозревал о такой тонкости
угумсь. хорошая статья.

Скриптор
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
Скриптор,
Ещё примерчик для понимания:

Строковая индексация
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
вы сравниваете index со значением только первого элемента массива. Результат может быть положительным лишь в случае набора в prompt'овой строке: "Яблоки по 10 грн за кг".
index - возвращаемая promp-м строка сравнивается с i по счёту элементом массива mass

что такое mass[index] можно понять из примера

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