在这种情况下,我应该使用大括号{}或方括号[]吗?

时间:2014-07-10 02:54:27

标签: javascript arrays

目前我有一个使用增加索引的数组:

var idx = 1;
var a = [];
a[idx++] = "apple";
a[idx++] = "orange";
...
console.log(a[2]);

只能通过[]访问它,而不是使用特定于数组的函数,例如lengthindexOf,...

显然,以下情况也适用于这种情况:

var a = {};

那么,在这种情况下我应该选择哪一个?例如,他们之间的任何性能差异?

2 个答案:

答案 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