2013-12-21 1 views
0

У меня есть список pax в моем HTML. Мне нужно создать объект, содержащий тип pax и их счет. например: {adult:3, child:2}fiddleКак создать объект элемента соответствия с помощью javascript

var obj='{'; 
$('.pax').find('div').each(function(i,val){ 
    var pax= $(this).text(); 
    obj+= $(this).text(); 
     obj+=':'; 
     obj+=i; 
     obj+=',' 

}) 

obj+="}" 

console.log (OBJ)

+3

Пожалуйста, никогда не создавать JSON с помощью строковых функций ... – ThiefMaster

+0

@ThiefMaster теперь вы должен объяснить OP почему;) –

ответ

3

Попробуйте

var obj = {}; 

$('.pax').find('div').each(function (i, val) { 
    var pax = $.trim($(this).text()); 
    obj[pax] = (obj[pax] || 0) + 1; 
}) 

Демо: Fiddle

Затем используйте JSON.stringify() если вы хотите строковое представление значения

5
var obj = {}; 
$('.pax div').each(function(i) { 
    var pax = $(this).text(); 
    obj[pax] = i; 
}); 

Однако, с текущей разметкой это не имеет никакого смысла - объекты не могут иметь несколько значений для того же ключа, если вы хранить массив:

var obj = {}; 
$('.pax div').each(function(i) { 
    var pax = $(this).text(); 
    if (!(pax in obj)) { 
     obj[pax] = []; 
    } 
    obj[pax].push(i); 
}); 

Если вам не нужны индексы, но количество для каждого типа, см this answer instead.

Если вам нужна строка JSON в конце, используйте JSON.stringify(obj).

+0

не думайте, что ищет OP - это последний индекс текста –

+0

Вот почему я включил второй блок кода. Но да, вопрос OP очень расплывчатый (спасибо, что напомнил мне, что он спустил его, p), что он на самом деле хочет. – ThiefMaster

+0

Я думаю, что «Мне нужно сделать объект, содержащий тип pax и их счет», достаточно ясно –

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