gpt4 book ai didi

javascript - 如果 JSON 数组是一个对象,为什么它会列在原语中?

转载 作者:行者123 更新时间:2023-11-28 19:49:23 25 4
gpt4 key购买 nike

当我第一次阅读 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?

最佳答案

“集合”可以有许多不同的属性(意思是“它的行为方式”):

  • 有保证订单吗?
  • 它是一个键值存储,其中键可以是任意的吗?
  • 它是同质的还是异质的?
  • 它会随着您放入元素而变大还是有固定大小?
  • 等等。等等

这些属性的任意组合都会为您提供不同类型的集合。这些在不同的语言中被称为列表、元组、数组、字典、哈希、对象等。每种类型在行为、严格性、复杂性、资源使用等方面都有不同的权衡。Javascript 选择实现两种类型:

  1. 列表,在 Javascript 中称为“数组”:

    • 有保证订单
    • 键只能是数字
    • 数字键是连续的(实际上不是,数组是稀疏的,但在迭代集合时应将其视为连续)
    • 可以是异构的
  2. 字典,在 Javascript 中称为“对象”:

    • 不保证订单
    • 键值关联集合
    • 可以是异构的

您可以根据哪个属性对您来说很重要,在两者之间进行选择。选择通常归结为有序与无序以及键值关联与键无相关性。请注意,Javascript 对两者的特定实现本质上都是 HashMap ,因为 Javascript 中的所有内容都是对象,都是函数,都是对象;但它们的用法仍然因上述几点而有所不同。

关于javascript - 如果 JSON 数组是一个对象,为什么它会列在原语中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23761773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com