2014-02-05 5 views
0
var obj = []; 
    $("tr[class*='row_']").each(function() { 
    var coord = ($(this).find("td:eq(1)").text().match(/\d{1,3}\|\d{1,3}/g)).toString(); 


    //alert($(this).find("td:eq(0)").text()) 

    if (obj[coord]) {obj[coord]++;} 
    else { obj.push({coord : 1 }) } 

    }) 

    alert(JSON.stringify(obj)); 

Мой выход:Jquery толчок объект переменной

 [{"coord":1},{"coord":1},{"coord":1},{"coord":1},{"coord":1},{"coord":1}] 

Когда он должен быть:

523|546 : 3, 
521|424 : 3 

Как тусклый я нажимаю "имя": 1, когда коорд мое имя?

+0

где эти цифры? можете ли вы опубликовать нам таблицу? –

+0

Таблица выглядит так: 005 (523 | 426) C45 x 3 и [166 Флора] (521 | 424) C45 x 3. Мое регулярное выражение является правильным, так как я уже тестировал это, проблема заключается в том, чтобы нажимать координату (523 | 426 например) с номером 1 в объекте. (Итак, если координата еще не указана в объекте, нажмите «координировать»: 1, else 1 + 1 :) – user3117628

ответ

3

Вы используете массив в своем коде var obj = []. Если вам нужен объект, вам нужно сделать это var obj = {}.

Затем вы используете obj.push({coord : 1 }). Это работает только для массивов. Для объектов вы можете просто сделать это obj[coord] = 1

var obj = {}; 
$("tr[class*='row_']").each(function() { 
    var coord = ($(this).find("td:eq(1)").text().match(/\d{1,3}\|\d{1,3}/g)).toString(); 
    //alert($(this).find("td:eq(0)").text()) 

    if (obj[coord]) { 
     obj[coord]++; 
    } 
    else { 
     obj[coord] = 1; 
    } 
}); 

alert(JSON.stringify(obj)); 
+0

Это не работает, объект пуст в начале, поэтому вы не можете просто сделать это, потому что вам нужно добавить сначала ключ (координата) и начальное значение (1). – user3117628

+0

Позвольте мне добавить простой jsFiddle. Дай мне пару минут. – Gohn67

+0

Ничего, это была глупая ошибка моей, lol. Спасибо за ваш ответ, принял его :) – user3117628

Смежные вопросы