跳到主要内容

数组和正则✅

用过 Array 哪些方法

答案
方法名作用简介
push向数组末尾添加元素
pop移除并返回数组最后一个元素
shift移除并返回数组第一个元素
unshift向数组开头添加元素
concat合并两个或多个数组
join将数组元素连接成字符串
slice返回数组的片段
splice添加/删除/替换数组元素
forEach遍历数组每个元素
map返回新数组,元素经函数处理
filter返回符合条件的新数组
reduce累加器,数组归约为单个值
find查找第一个符合条件的元素
findIndex查找第一个符合条件元素的索引
every检查所有元素是否满足条件
some检查是否有元素满足条件
includes判断数组是否包含某元素
indexOf查找元素首次出现的索引
lastIndexOf查找元素最后出现的索引
sort对数组排序
reverse反转数组顺序
flat扁平化嵌套数组
flatMap映射并扁平化数组

什么是伪数组和数组的区别是什么如何转换

答案

伪数组(Array-like Object)是具有 length 属性和索引化元素(如 arguments 对象、DOM 集合)的对象,但它们不是真正的数组实例,因此不具备数组的内置方法(如 push, pop, slice 等)。

核心特征:

  1. length 属性:表示元素的数量。
  2. 索引访问:可以通过数字索引(如 obj[0])访问元素。
  3. 非数组实例Array.isArray(arrayLikeObject) 返回 false
  4. 缺少数组方法:不能直接调用 forEach, map 等数组方法。

转换为真实数组的方法:

  1. Array.from(): ES6 引入,是转换类数组对象或可迭代对象的首选方法。

    const arrayLike = { 0: 'a', 1: 'b', length: 2 }
    const trueArray = Array.from(arrayLike) // ['a', 'b']
  2. 展开运算符 (...): ES6 引入,简洁易读,适用于可迭代对象。

    const nodeList = document.querySelectorAll('div')
    const trueArray = [...nodeList]
  3. Array.prototype.slice.call(): 经典方法,通过调用数组的 slice 方法并将其 this 指向类数组对象。

    const arrayLike = { 0: 'a', 1: 'b', length: 2 }
    const trueArray = Array.prototype.slice.call(arrayLike) // ['a', 'b']

转换后,就可以在新的数组上使用所有标准的数组方法了。

55%