[js, jquery]перебирать массив и ключи хэша

rtyug
На сайте с 13.05.2009
Offline
263
1498

я хотел перебирая массив, посмотреть если ли такое значение массив в ключе хэша... (значение хеша равняется 1)

т.е. {'34' => 1, '35' =>1}


for (var i = 0, len = tr.length > 20 ? 20 : tr.length; i < len; i++) {

if ( $(".send:eq("+i+")").html() == msg.array_send_upd.(i) ) {
$(".send:eq("+i+")").html('1');
$(".send_me:eq("+i+")").html('1111');
}

}

msg.array_send_upd. - это хэш

а как мне посмотреть есть ли у него ключ $(".send:eq("+i+")").html() (соответственно и значение)

т.е. я запутался, как тут написать if ( $(".send:eq("+i+")").html() == msg.array_send_upd.(i) ) { чтобы это сравнить ??

Спалил тему: Pokerstars вывод WMZ, etc на VISA 0% или SWIFT + Конверт USD/GBP,etc (net profit $0,5 млрд) (https://minfin.com.ua/blogs/94589307/115366/) Monobank - 50₴ на счет при рег. тут (https://clck.ru/DLX4r) | Номер SIP АТС Москва 7(495) - 0Ꝑ, 8(800) - 800Ꝑ/0Ꝑ (http://goo.gl/XOrCSn)
DeveloperRu
На сайте с 27.02.2009
Offline
72
#1

правильно сделать так



var len = tr.length > 20 ? 20 : tr.length;

for (var i = 0; i < len; i++) {

var $send = $(".send").eq(i);


if ( $send.html() == msg.array_send_upd ) {
$send.html(1);
$(".send_me").eq(i).html(1111);
}

}

Ответы на вопросы (http://telenok.com)
rtyug
На сайте с 13.05.2009
Offline
263
#2

что-то не работает

if ( $send.html() == msg.array_send_upd ) {

msg.array_send_upd - это получается массив, а не хэш? разве это запись для хэша?

DeveloperRu
На сайте с 27.02.2009
Offline
72
#3
rtyug:
что-то не работает

if ( $send.html() == msg.array_send_upd ) {

msg.array_send_upd - это получается массив, а не хэш? разве это запись для хэша?

доступ к элементам хэша такой же как и к элементам массива, разница лишь в индексах - для массивов ключи - целочисленные, а для хэша - любые

еще к элементам хеша можно обращаться так

msg.array_send_upd.newkey = 'asdasd';

ПС смотри, что у тебя в msg через firebug, делая

console.debug(msg);
if ( $send.html() == msg.array_send_upd ) {
rtyug
На сайте с 13.05.2009
Offline
263
#4

проблема в том что я не могу настроить фиребаг, он просто не работает :(

я сделал отладку в скрипте и отправил как строку, т.е. там 95% вероятности что идет именно хэш

$VAR1 = { '317' => 1 };

(это то, что пришло в js, т.е. хєш)

т.е. 1) я перебираю таблицу for (var i = 0; i < len; i++) {

2) ищу id по очереди (id в MySQL таблицу на самом деле)

3) я хочу сравнить это id есть ли оно в хэше (в ключе хэша...)

как нибудь, пытался по разному

msg.array_send_upd[$(".id:eq("+i+")").html()] == 1

4) если совпадает ключ с id, то отмечаем что отчет пришел

$(".send:eq("+i+")").html('1');

и $(".send_me:eq("+i+")").html('блп-бла-пришел');

может я структуру не так сделал, как это можно сделать?

т.е. проблема именно тут: msg.array_send_upd[$(".id:eq("+i+")").html()] == 1

ЗЫ я хотел сделать отчет в чате, чтобы было видно когда пользователь принял сообщение, а когда нет, вместо личных сообщений...

DeveloperRu
На сайте с 27.02.2009
Offline
72
#5

в смысле не запускается firebug ?

сложно это представить просто... - я бы лучше потратил время на запуск firebug, чем тыкать пальцем в небо

что же касается хеша

то он должен создаваться так:

var $VAR1 = { '317':1 };

rtyug
На сайте с 13.05.2009
Offline
263
#6

вопрос не много другой:

ну допустим я поставлю в msg.array_send_upd ключ 'messsend_XXX'

XXX - это id

как тут тогда записать, подскажите пожалуйста?? так?


if ( msg.array_send_upd.messsend_$(".id:eq("+i+")").html() && msg.array_send_upd.messsend_$(".id:eq("+i+")").html() == 1 )
{

}
DeveloperRu
На сайте с 27.02.2009
Offline
72
#7

нужно соединить строку messsend_ с переменной $(".id").eq(i).html() через +


if ( msg.array_send_upd['messsend_'+$(".id").eq(i).html()] && msg.array_send_upd['messsend_'+$(".id").eq(i).html()] == 1 )
{

}
rtyug
На сайте с 13.05.2009
Offline
263
#8

спасибо, работает:

if ( msg.array_send_upd[$(".id:eq("+i+")").html()] )
{

DeveloperRu
На сайте с 27.02.2009
Offline
72
#9

пож-та 10символов

rtyug
На сайте с 13.05.2009
Offline
263
#10

ну я предполагал что оно именно так и должно, по этому я так и пробовал, но видимо я просто где-то что-то запутал, а оно не работало, проблема была банальная :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий