jquery $.each() для объектов

#jquery #each

#jquery #каждый

Вопрос:

 <script>
    $(document).ready(function() {
        var data = { "programs": [ { "name":"zonealarm", "price":"500" }, { "name":"kaspersky", "price":"200" } ] };
        $.each(data.programs[0], function(key,val) {
            alert(key val);
        });
    });
</script>
  

Этот код извлекает первые данные. name:zonealarm и price:500 .

Как я могу получить все данные в объекте?

Я пытался $.each(data.programs, function(key,val) , но это не сработало.

Должен ли я поместить это в цикл?

Ответ №1:

$.each() работает как для объектов, так и для массивов:

 var data = { "programs": [ { "name":"zonealarm", "price":"500" }, { "name":"kaspersky", "price":"200" } ] };

$.each(data.programs, function (i) {
    $.each(data.programs[i], function (key, val) {
        alert(key   val);
    });
});
  

…и поскольку вы получите текущий элемент массива в качестве второго аргумента:

 $.each(data.programs, function (i, currProgram) {
    $.each(currProgram, function (key, val) {
        alert(key   val);
    });
});
  

Ответ №2:

Вы действительно передаете первый элемент данных в функцию each.

Вместо этого передайте data.programs в функцию each. Измените код на приведенный ниже:

 <script>     
    $(document).ready(function() {         
        var data = { "programs": [ { "name":"zonealarm", "price":"500" }, { "name":"kaspersky", "price":"200" } ] };         
        $.each(data.programs, function(key,val) {             
            alert(key val);         
        });     
    }); 
</script> 
  

Комментарии:

1. но тогда я не получаю точных значений, только индекс каждого объекта?

2. Потому что вы получаете здесь весь объект. Чтобы получить точные значения / извлечь значения из объекта: console.log(ключ » » val.name » » валоваяцена);

Ответ №3:

В принципе, здесь нужно выполнить два цикла. То, что вы уже делаете, — это повторение каждого элемента в 0-м элементе массива.

У вас есть программы: [ {…}, {…} ] итак, programs[0] — это { «name»: «zonealarm», «price»:»500″ }, Так что ваш цикл просто повторяет это.

Вы могли бы выполнить внешний цикл над массивом

 $.each(data.programs, function(index) {

    // then loop over the object elements
    $.each(data.programs[index], function(key, value) {
        console.log(key   ": "   value);
    }

}
  

Ответ №4:

Вставьте данные в раздел «INId»…

 $(document).ready(function() {
        var data = { "programs": [ { "name":"zonealarm", "price":"500" }, { "name":"kaspersky", "price":"200" } ] };
        $.each(data.programs, function(key,val) {
            // console.log(val);
            $('#InId').append("Name: "  val.name " amp; Price: " val.price "<br/>");
        });
    });  

$(документ).готово(функция() { var data = { «программы»: [ { «имя»: «zonealarm», «цена»: «500» }, { «имя»:»касперский», «цена»:»200″ } ] }; $. каждый(данные.программы, функция(ключ,значение) { // console.log(значение); $(‘#InId’).append(«Имя: » val.name » amp; Price: » val.price «
«); }); });

Ответ №5:

 var arType = [];
$.each($("input[name='archiveType[]']:checked"), function() {
   arType.push($(this).val());
});
arType = arType.join(",");
  

Комментарии:

1. Ваш ответ можно было бы улучшить, добавив больше информации о том, что делает код и как это помогает операционной системе.