什么是数组_如何遍历和操作javascript数组【教程】

夢幻星辰

夢幻星辰

2026-02-02

446人浏览

原创

for...in 不该遍历数组,因其遍历所有可枚举属性(含继承和非数字键),不保证顺序、不跳过稀疏空位,且易受原型污染或手动添加属性影响。

什么是数组_如何遍历和操作javascript数组【教程】

JavaScript 中的数组不是“类数组对象”,也不是“内存连续的固定大小结构”——它本质是带数字键的特殊对象,length 属性可读写,索引自动触发增删逻辑。

为什么 for...in 不该用来遍历数组

for...in 遍历的是对象的所有可枚举属性(包括继承的、手动添加的非数字键),不保证顺序,也不跳过稀疏空位。数组上一旦执行过 arr.foo = 'bar' 或原型被污染,for...in 就会出错。

  • for (let i = 0; i 最安全,尤其在性能敏感或需修改数组时
  • for...of 只遍历元素值,跳过空槽(如 [1, , 3] 中间那个 undefined 会被跳过)
  • forEach() 不能 breakreturn 跳出,错误处理需靠 try/catch 包裹回调

push/popunshift/shift 的性能差异在哪

所有这四个方法都会修改原数组并返回新长度(pop/shift 返回被删元素)。但底层行为不同:

Java JDK 25
Java JDK 25

Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。

下载
  • pushpop 操作末尾:时间复杂度 O(1),几乎无性能顾虑
  • unshiftshift 操作开头:需要重排所有索引,O(n) 时间,数组越大越慢
  • 若频繁从头增删,考虑用 Deque 类库或改用 push+reverse 等间接策略

哪些操作会改变原数组,哪些不会

区分“变异(mutating)”和“非变异(non-mutating)”是避免隐性 bug 的关键:

  • 会改原数组:pushpopshiftunshiftsplicesortreversefillcopyWithin
  • 不改原数组:sliceconcatmapfilterflatMaptoSorted(ES2024)、with(ES2023)
  • splice 是唯一既能删又能插还能返删项的多面手,但容易误写成 arr.splice(1)(从索引 1 删到末尾)而非 arr.splice(1, 1)(只删 1 个)

稀疏数组、负索引、length 手动赋值这些行为看似边缘,但在处理分页数据、WebSocket 流式更新或 legacy API 响应时,很容易踩中。别默认数组“总是致密”的。

Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南

相关文章

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

java javascript websocket

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
sort排序函数用法
sort排序函数用法

sort排序函数的用法:1、对列表进行排序,默认情况下,sort函数按升序排序,因此最终输出的结果是按从小到大的顺序排列的;2、对元组进行排序,默认情况下,sort函数按元素的大小进行排序,因此最终输出的结果是按从小到大的顺序排列的;3、对字典进行排序,由于字典是无序的,因此排序后的结果仍然是原来的字典,使用一个lambda表达式作为key参数的值,用于指定排序的依据。

2023.09.04

893

7

php中foreach用法
php中foreach用法

本专题整合了php中foreach用法的相关介绍,阅读专题下面的文章了解更多详细教程。

2025.12.04

450

13

java中break的作用
java中break的作用

本专题整合了java中break的用法教程,阅读专题下面的文章了解更多详细内容。

2025.10.15

884

7

java break和continue
java break和continue

本专题整合了java break和continue的区别相关内容,阅读专题下面的文章了解更多详细内容。

2025.10.24

403

6

length函数用法
length函数用法

length函数用于返回指定字符串的字符数或字节数。可以用于计算字符串的长度,以便在查询和处理字符串数据时进行操作和判断。 需要注意的是length函数计算的是字符串的字符数,而不是字节数。对于多字节字符集,一个字符可能由多个字节组成。因此,length函数在计算字符串长度时会将多字节字符作为一个字符来计算。更多关于length函数的用法,大家可以阅读本专题下面的文章。

2023.09.19

1231

6

golang map内存释放
golang map内存释放

本专题整合了golang map内存相关教程,阅读专题下面的文章了解更多相关内容。

2025.09.05

130

5

golang map相关教程
golang map相关教程

本专题整合了golang map相关教程,阅读专题下面的文章了解更多详细内容。

2025.11.16

223

7

golang map原理
golang map原理

本专题整合了golang map相关内容,阅读专题下面的文章了解更多详细内容。

2025.11.17

350

20

java判断map相关教程
java判断map相关教程

本专题整合了java判断map相关教程,阅读专题下面的文章了解更多详细内容。

2025.11.27

139

6

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WebStorm 官方调试文档
WebStorm 官方调试文档

共0课时 | 0人学习

React 教程
React 教程

共58课时 | 11万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 6.1万人学习