Как сделать объект элемента соответствия, используя JavaScript

0

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

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, используя строковые функции ...
  • 0
    @ThiefMaster теперь вы должны объяснить ОП, почему;)
Теги:

2 ответа

3
Лучший ответ

Пытаться

var obj = {};

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

Демо: скрипка

Затем используйте 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);
});

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

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

  • 0
    не думайте, что ОП ищет последний индекс текста
  • 0
    Вот почему я включил второй блок кода. Но да, вопрос ОП очень расплывчатый (спасибо, что напомнили мне понизить его; р), чего он на самом деле хочет ..
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню