【问题标题】:jQuery each() giving me two different results with nested objectsjQuery each() 给我两个不同的嵌套对象结果
【发布时间】:2013-10-06 19:36:25
【问题描述】:

我正在尝试使用下面的代码,它通过在第二个 each() 中向本田、丰田和福特发出警报,从而按照我想要的方式工作。但是第一个只输出 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);
})

【问题讨论】:

  • 第一个不正确,因为您正在尝试创建一个 jQuery 对象,但 cars 不是有效的 DOM 元素或选择器,这就是它输出 O 的原因。
  • 你的内部对象应该是数组。喜欢honda : ["Accord", "Prelude", "Civic"]

标签: jquery each javascript-objects


【解决方案1】:

您的第一个示例输出 0,因为当您执行 $(cars) 时,您将 cars 对象包装在一个 jQuery 对象中,该对象具有一个索引为 0 的元素。

您还应该注意两种“每个”方法之间的区别:

jQuery.each() 或 $.each():

一个通用的迭代器函数,可以用来无缝迭代 对象和数组。

.each():

遍历一个 jQuery 对象,为每个匹配的元素执行一个函数。

【讨论】:

    【解决方案2】:

    试试这个,循环遍历一个数组:

    for (i=0; i<cars.length; i++){
        alert (cars[i]);
    } 
    

    【讨论】:

    • 车钥匙不是车名吗?那么这不意味着引用索引的元素 i 返回 null 吗?
    • 对...但我要说的是 i 是一个整数。在我上面定义的数据结构中,我没有任何整数索引编辑:对不起,我有。但他们在汽车[][],而不是汽车[]
    • 对不起,我的错。在这种情况下,您需要两个循环,一个在另一个循环内。你会得到你需要的车型
    • OP 不适用于数组,但适用于嵌套对象,对象没有长度属性,因此您的答案在这种情况下无效
    猜你喜欢
    • 2012-08-15
    • 2019-04-10
    • 1970-01-01
    • 2013-05-23
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 2020-04-04
    相关资源
    最近更新 更多