目前我有一个使用增加索引的数组:
var idx = 1;
var a = [];
a[idx++] = "apple";
a[idx++] = "orange";
...
console.log(a[2]);
只能通过[]
访问它,而不是使用特定于数组的函数,例如length
,indexOf
,...
显然,以下情况也适用于这种情况:
var a = {};
那么,在这种情况下我应该选择哪一个?例如,他们之间的任何性能差异?
答案 0 :(得分:14)
[]表示一个数组。数组只包含值:
var a1 = [1, 2, 3, 4]
正如@Qantas指出的那样,数组可以包含的不仅仅是值。数组甚至可以包含另一个数组和/或对象:
var a2 = [1, 2, ["apple", "orange"], {one: "grape", two: "banana"}];
{}表示一个对象。对象具有键值对,如
var a3 = {one: 1, two: 2}
在您的情况下,这实际上是您希望如何访问数据的问题。如果您只对“苹果”,“梨”等感兴趣,请继续使用阵列。您可以通过它的索引
访问它a1[0]; // outputs 1
a1[1]; // outputs 2
或者您可以使用循环迭代它。如果你使用花括号(给定我给出的例子)你可以用
访问它a3.one; // outputs 1
a3["two"]; // outputs 2
在这种情况下,最重要的是如何最符合您的需求。有关更广泛的讨论,请参阅此article。
答案 1 :(得分:3)
不同之处在于使用方括号将创建一个Array对象,而使用花括号创建一个普通对象。例如:
a = [];
a[1] = 'a';
b = {};
b[1] = 'b';
a.length; // returns 2
b.length; // is undefined
a.push('z'); // add 'z' to the end of a
b.push('z'); // generates an error - undefined is not a function
// because plain objects don't have a push method
阅读有关Array对象的MDN文档,了解有关数组的更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array