You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript数组访问array[i]的时间复杂度是否为O(1)?

JavaScript数组下标访问array[i]的时间复杂度解析

在JavaScript里,array[i]是**O(1)**的直接访问操作,并非从下标0开始逐一计数查找。

原因在于:JavaScript的数组虽属于特殊对象,但对于连续的整数下标(从0起始),引擎会为其分配连续的内存空间并做针对性优化。当你通过array[i]访问元素时,引擎能直接通过「起始内存地址 + 下标×单个元素占用字节数」的计算,一步定位到目标元素的内存位置,无需遍历前置元素。

比如当i=3时,引擎不会从0数到3,而是直接算出第3个元素的位置并取出对应值。

需要注意一种特殊场景:如果数组存在大量非连续下标(比如手动设置array[10000] = 'foo'但前面元素未赋值),此时数组可能退化为普通对象,下标访问的性能会有所下降,但这种情况在日常开发中极少出现,常规连续下标数组的访问操作都是O(1)的。

内容的提问来源于stack exchange,提问作者Kid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 21:31:01