表示Javascript数组的适当形式是什么?

时间:2016-06-27 12:36:52

标签: javascript

我正在使用Javascript对象进行培训,我发现了这些代表Javascript数组的示例:

var obj = {
    key : {
        0 : {name : "test0"},
        1 : {name : "test1"},
        2 : {name : "test2"}
    }
}

var obj2 = {
    key : [
        {name : "test0"},
        {name : "test1"},
        {name : "test2"}
    ]
}

console.log(obj.key[0].name);  //test0
console.log(obj2.key[0].name); //test0

哪一个是数组的适当表示?这些是等价的,为什么?

2 个答案:

答案 0 :(得分:0)

第二个例子是更好的解决方案,特别是如果您计划将对象视为数组:

var obj2 = {
    key: [
        {name: "test0"},
        {name: "test1"},
        {name: "test2"}
    ]
};

这将允许您按顺序访问元素:

for (var i = 0; i < obj2.length; ++i) {
    console.log("Name: ", obj2[i].name);
}

另一个(第一个)示例将使用数字键创建一个对象,但实际上并不创建数组。鉴于此,对象上将无法使用数组方法。

但是,如果您尝试创建稀疏数组,这是合适的方法。考虑这个例子:

var obj = {
    key : {
        0 : {name : "test0"},
        3 : {name : "test3"},
        8 : {name : "test8"}
    }
}

这将为您提供一个可以用整数索引的对象,但整数索引不必是连续的。事实上,在这种情况下,迭代数组的上述示例将失败,相反,您应该使用此方法:

for (var i in obj2) {
    console.log("Name: ", obj2[i].name);
}

答案 1 :(得分:-2)

var obj2 = {
    key: [
        {name: "test0"},
        {name: "test1"},
        {name: "test2"}
    ]
};

这是最好的方法和正确的方法。更容易迭代。建议使用对象阵列,而不是标记键0,1,2,3,4