当我第一次阅读JSON格式规范时,我的印象是对象是键值对的集合(值为任何类型),而数组是零个或多个元素的集合。 相同的类型。
对象(混合值):
{
"key": "value",
"key2": 2
}
数组(单一类型):
[1, 2, 3]
["one", "two", "three"]
[
{"key": "value"},
{"key2": 2}
]
我遇到了一些包含带有混合类型元素的数组的示例。经过测试,这在Node.js中是合法的,我想知道:为什么有两种不同的集合类型如此相似?
数组(混合类型):
[1, "two", {"three": 4}]
我能看到的唯一主要区别是数组不需要每个“值”的“键”。还有其他重大差异吗?
修改:
鉴于原件的重复问题,并且阵列是一个装扮对象,我稍微修改了这个问题。 (对原始答案道歉。)
我最好的猜测是数组非常常见,为它们添加语法和预定义类主要是为了方便。
可能的重复/参考问题:What is the difference between an array and an object?
答案 0 :(得分:3)
A" collection"可以有许多不同的属性(在&#34的含义;它的行为方式"):
这些属性的任意组合都会为您提供不同类型的集合。这些在不同的语言中以不同的语言被称为列表,元组,数组,字典,散列,对象等。每个在行为与严格性与复杂性与资源使用等方面有不同的权衡.Javascript选择实现两种类型:
列出名为"数组"在Javascript:
字典,称为"对象"在Javascript:
您可以根据哪个属性对您进行选择来选择。选择通常归结为有序与无序和键值关联,而不是关键字的相关性。注意,Javascript的两者的特定实现基本上都是哈希映射,因为Javascript中的所有东西都是一个对象,一个函数是一个对象;但是它们的用法因上述几点而有所不同。
答案 1 :(得分:0)
[] instanceof Object
> true
数组是方便方法 [see this answer]的对象。
除了它们的性质之外,当然你需要一个有序结构,你可以遍历[数组],以及一个键:值集合,你想通过点或括号表示法访问它们的值[{ {1}}或someObj.someKey
]。