内容提要
这篇文章总结了JavaScript中数组的常用操作,包括创建数组、初始化二维数组、创建连续数字的范围数组、判断是否是数组类型、查找元素、循环数组、数组操作、拷贝复制数组等。同时还介绍了不改变原数组的方法。
延伸解读
fill() 填充复杂类型时的引用陷阱
使用 fill() 填充对象或数组等复杂类型时,所有项会共享同一个引用地址。修改其中一项的属性,其他项也会同步变化。文章建议改用循环,每次迭代创建新对象,从而避免意外的数据污染。
查找方法的选择:基本类型与复杂类型
对于基本类型,includes() 语义清晰,适合判断存在性;indexOf() 和 lastIndexOf() 则返回下标。对于复杂类型,应使用 find()、findIndex()、some() 和 every() 等方法,它们能基于回调条件查找,且 find() 在找到第一个匹配项后即停止遍历,效率更高。
浅拷贝的边界:基本类型与复杂类型的不同表现
解构、concat() 和 slice() 实现的是浅拷贝。若数组包含对象等复杂类型,原数组和新副本会共享这些对象的引用,修改对象属性会相互影响。但操作基本类型元素或调整数组结构(如排序、增删元素)不会影响原数组。
ES2023 新增的非破坏性数组方法
reverse()、sort() 和 splice() 会直接修改原数组。ES2023 引入了 toReversed()、toSorted() 和 toSpliced(),它们返回新数组而不改变原数组,避免了先拷贝再操作的繁琐,使代码更安全、更易读。
Q&A
如何在JavaScript中创建一维数组?
可以使用字面量、构造函数或fill()方法创建一维数组,例如 const arr = []; 或 const arr = new Array(10);
JavaScript中如何判断一个变量是否为数组?
可以使用Array.isArray()方法,或者使用instanceof运算符来判断。
如何在JavaScript中查找数组中的元素?
可以使用includes()、indexOf()、find()等方法,根据需求选择合适的方法。
JavaScript中如何初始化二维数组?
应使用循环创建每一行,避免嵌套使用new Array(),以防止数据共享引用。
JavaScript中如何进行数组的浅拷贝?
可以使用解构、concat()或slice()方法进行浅拷贝。
ES2023中引入了哪些不改变原数组的方法?
引入了toReversed()、toSorted()和toSpliced()等方法,这些方法不会影响原数组。