var = {}和var = []之间的区别?
可能重复:
Javascript中的对象与数组之间的键/值对
我在JavaScript中有一个变量,我使用的是 hash 。我可以将它初始化为:
I have a variable in JavaScript which I am using like a hash. I can initialize it like:
var selected = [];
或
var selected = {};
它完全相同。我正在使用它,例如:
and it does the same exact thing. I'm using it like this for example:
selected["one"] = 1;
if (selected["one"] == 1) console.log("one is selected");
// result: one is selected
if (selected["two"] != 1) console.log("two is not selected");
// result: two is not selected
selected["one"] = 0;
if (selected["one"] != 1) console.log("one is no longer selected");
// result: one is no longer selected
真的有区别吗?是一个对象,另一个是数组吗?如果是这样,我什么时候应该遇到问题。也就是说,两者在使用上有什么区别,为什么你会选择一个呢?
Is there really a difference? Is one an object and the other an array ? If so, when should I expect to run into problems. Ie., what is the difference between the two in their usage, and why would you chose one over the other?
[] 是一个数组, {}
是一个对象。数组是一种只能分配数字键的对象。
[]
is an array, {}
is an object. An array is a type of object intended to be only assigned numeric keys.
虽然理论上你可以互换使用它们,看看当你JSON-ify时会发生什么:
While you can in theory use them interchangably, look what happens when you JSON-ify them:
var tmp = []; // or: var tmp = {}
tmp.one = 1;
JSON.stringify(tmp);
// array:
'[]'
// object:
'{"one":1}'