jQuery each () дает мне два разных результата с вложенными объектами

0

Я пытаюсь использовать приведенный ниже код, и он работает так, как я хочу, оповещающим с honda, toyota и ford во втором каждом(). Но первый из них просто выводит 0. Почему он это делает?

var cars = {
        honda : {0: "Accord", 1: "Prelude", 2: "Civic"},
        toyota: {0: "Camry", 1: "Corolla", 2: "BRZ"},
        ford: {0: "Mustang", 1: "Focus"}
}

$(cars).each(function(key, value)) {
    alert(key);
})

$.each(cars, function(key, value) {
    alert(key);
})
  • 1
    Первый неверен, так как вы пытаетесь создать объект jQuery, но cars не являются допустимым элементом или селектором DOM, поэтому он выводит O
  • 2
    И ваши внутренние объекты действительно должны быть массивами. Например, honda : ["Accord", "Prelude", "Civic"]
Теги:
each
javascript-objects

2 ответа

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

Ваш первый пример выводит 0, потому что когда вы делаете $(cars), вы обертываете свой cars объект jQuery, объект с одним элементом с индексом 0.

Также следует отметить различие между "каждым" методом:

jQuery.each() или $.each():

Общая функция итератора, которая может использоваться для беспрепятственной итерации по обоим объектам и массивам.

.each():

Итерация над объектом jQuery, выполнение функции для каждого согласованного элемента.

0

попробуйте это, чтобы пройти через массив:

for (i=0; i<cars.length; i++){
    alert (cars[i]);
} 
  • 0
    разве они не ключи от машин, а названия машин? не значит ли это, что ссылка на элемент с индексом возвращает ноль?
  • 0
    нет. это на самом деле вернет стоимость автомобиля [я]
Показать ещё 3 комментария

Ещё вопросы

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