Javascript 数组是JS中唯一的0(1)数据结构吗?如果是这样的话,为什么顶级答案会提出相反的要求?
假设您使用的是JavaScript中的大型关系数据结构,需要经常快速地访问信息。在JS中的幕后使用应该能够以O(1)的效率访问大型数据结构。但我下面的代码示例将演示,对于普通对象,它不接近0(1)。但是,在讨论数组(以及对象)的效率时,声称数组应该利用哈希表执行“与常规对象值一样”: 与大多数实现数组的语言不同, 数组,在Javascript中数组是对象,值存储在 哈希表,就像常规对象值一样。因此:Javascript 数组是JS中唯一的0(1)数据结构吗?如果是这样的话,为什么顶级答案会提出相反的要求?,javascript,node.js,hashtable,Javascript,Node.js,Hashtable,假设您使用的是JavaScript中的大型关系数据结构,需要经常快速地访问信息。在JS中的幕后使用应该能够以O(1)的效率访问大型数据结构。但我下面的代码示例将演示,对于普通对象,它不接近0(1)。但是,在讨论数组(以及对象)的效率时,声称数组应该利用哈希表执行“与常规对象值一样”: 与大多数实现数组的语言不同, 数组,在Javascript中数组是对象,值存储在 哈希表,就像常规对象值一样。因此: 通道-O(1) 追加-摊销O(1)(有时需要调整哈希表的大小;通常只需要插入) 通过unshi
- 通道-O(1)
- 追加-摊销O(1)(有时需要调整哈希表的大小;通常只需要插入)
- 通过
预结束-O(n),因为它需要重新分配所有索引unshift
- 插入-如果该值不存在,则摊销O(1)。O(n)如果要移动现有值(例如,使用
)拼接
- 删除-摊销O(1)以删除值,如果要通过
拼接重新分配索引,则为O(n)
- 交换-O(1)
let count;
让我们开始;
让我们结束;
允许访问;
让计数=[];
//物体速度测试
设objData=[];
设obj={}
计数=0;
//不要将其升高到i<5以上,循环将挂起
对于(设i=0,j=100;i<5;i++,j*=10){
如果(i==1)j-=100;
for(设k=0;k
保证
无法保证数组和对象的查找时间。可能是O(1),可能更糟,具体取决于实现。地图查找时间平均要优于O(n):
映射对象必须使用哈希表或其他机制实现,这些机制平均提供的访问时间与集合中的元素数呈次线性关系<