Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中是否存在一个数组/列表?_Javascript_Arrays_Hashmap_Javascript Objects - Fatal编程技术网

JavaScript中是否存在一个数组/列表?

JavaScript中是否存在一个数组/列表?,javascript,arrays,hashmap,javascript-objects,Javascript,Arrays,Hashmap,Javascript Objects,我想了解JavaScript中是否存在列表/数组,而不是类似数组的对象。如果有这方面的资源或信息,我会喜欢的 据我所知,JavaScript中的数组只是对象,数组的索引是对象中的一个键。但是对象的哈希映射正确吗?在这种情况下,哈希映射获取一个键,将其哈希到一个索引,然后将该值存储在一个列表/数组中的索引处。这样,如果我们需要访问对象中的一个键,我们可以轻松地散列该键并转到数组以在恒定时间内访问该值。 但是数组在JavaScript中并不存在,所以在JavaScript中是否存在一些我们无法访问的

我想了解JavaScript中是否存在列表/数组,而不是类似数组的对象。如果有这方面的资源或信息,我会喜欢的

据我所知,JavaScript中的数组只是对象,数组的索引是对象中的一个键。但是对象的哈希映射正确吗?在这种情况下,哈希映射获取一个键,将其哈希到一个索引,然后将该值存储在一个列表/数组中的索引处。这样,如果我们需要访问对象中的一个键,我们可以轻松地散列该键并转到数组以在恒定时间内访问该值。 但是数组在JavaScript中并不存在,所以在JavaScript中是否存在一些我们无法访问的类似数组/列表的数据结构?

JavaScript是一种解释性语言。您可以用许多不同的语言编写一个有效的JS引擎,因此规范本身提供了一个非常抽象的内存模型。这意味着对象是键值对的集合,提供了访问这些键值对的方法,而数组是外来对象,它们以不同的方式处理数字键。就是这样,规范没有定义任何其他内容,因此如何在内存中实际表示它完全取决于引擎

虽然您是对的,但在内部(在某些情况下)将对象实现为哈希表,将数组实现为实际数组或列表确实是有意义的。大多数引擎使用不同的底层实现,这取决于您使用对象/数组的方式

值得一读:

JavaScript是一种解释语言。您可以用许多不同的语言编写一个有效的JS引擎,因此规范本身提供了一个非常抽象的内存模型。这意味着对象是键值对的集合,提供了访问这些键值对的方法,而数组是外来对象,它们以不同的方式处理数字键。就是这样,规范没有定义任何其他内容,因此如何在内存中实际表示它完全取决于引擎

虽然您是对的,但在内部(在某些情况下)将对象实现为哈希表,将数组实现为实际数组或列表确实是有意义的。大多数引擎使用不同的底层实现,这取决于您使用对象/数组的方式

值得一读:


不。JavaScript数组是JavaScript对象,没错。但是引擎实现决定了如何在引擎盖下表示这些内容,它们可以是数组、哈希映射或记录。(出于性能优化的原因,通常情况下是这样)。可能重复的JavaScript数组不是。JavaScript数组是JavaScript对象,这是真的。但是引擎实现决定了如何在引擎盖下表示这些内容,它们可以是数组、哈希映射或记录。(出于性能优化的原因,通常是这样)。阵列的可能副本实际上没有数字作为键。键仍然只是字符串或符号。数组只是特殊处理的外来对象。而且,我怀疑数组是否表示为链表。你是说阵列列表/向量吗?@Bergi啊,对了,这是我从未理解过的设计决策之一。。。是的,这句话是一个相当模糊的说法,最好删除它。我猜它是从“一切都是对象”,“对象有字符串属性名”和“让强制类型使编程更容易”的原则中产生的。现在改变已经太晚了。(虽然引擎当然会优化不必要的来回转换)。数组并没有真正的数字作为键。键仍然只是字符串或符号。数组只是特殊处理的外来对象。而且,我怀疑数组是否表示为链表。你是说阵列列表/向量吗?@Bergi啊,对了,这是我从未理解过的设计决策之一。。。是的,这句话是一个相当模糊的说法,最好删除它。我猜它是从“一切都是对象”,“对象有字符串属性名”和“让强制类型使编程更容易”的原则中产生的。现在改变已经太晚了。(尽管发动机当然会优化不必要的铸造往返)。