当前位置: 首页 > wzjs >正文

网站欣赏网站欣赏广州网站建设V芯ee8888e

网站欣赏网站欣赏,广州网站建设V芯ee8888e,广告优化师没经验怎么面试,分享推广JavaScript数组方法——梳理和考点 数组是JavaScript中核心的数据结构,也是面试中的高频考点。最近在面试,开始补课梳理JavaScript数组方法,按功能分类并配以示例。 一、元素增删方法 可以直接修改原数组,适用于动态调整数据的场景…

JavaScript数组方法——梳理和考点

数组是JavaScript中核心的数据结构,也是面试中的高频考点。最近在面试,开始补课梳理JavaScript数组方法,按功能分类并配以示例。

一、元素增删方法

可以直接修改原数组,适用于动态调整数据的场景。

方法方向改变原数组返回值示例
push(...items)尾部✔️新数组长度arr.push(8) → 尾部添加8
pop()尾部✔️删除的元素arr.pop() → 删除最后一个元素
unshift(...items)头部✔️新数组长度arr.unshift(0) → 头部添加0
shift()头部✔️删除的元素arr.shift() → 删除第一个元素
splice(start, deleteCount, ...items)任意位置✔️被删除元素组成的数组arr.splice(1, 2, 'a') → 从索引1开始删除2个元素并插入’a’

关键区别

  • push/pop 性能优于 unshift/shift (无需移动索引)
  • splice 支持同时删除、插入、替换

二、查找与检测方法

不改变原数组,用于数据检索和条件验证。

1. 值存在性检查
// 检查存在性
['a', 'b'].includes('b') // true(找到返回布尔)
['a', 'b'].indexOf('b') // 1(找到返回索引)
['a', 'b'].lastIndexOf('b') // 1(找到返回索引,从尾查找)
2. 条件查找
// 条件查找
[1, 2, 3].find(v => v > 1) // 2(首个匹配值,返回item)
[1, 2, 3].findIndex(v => v > 1) // 1(首个匹配的索引,返回index)
[1, 2, 3].filter(v => v > 1) // [2, 3](所有匹配值,返回新arr)
3. 批量验证
// 批量验证
[1, 2, 3].some(v => v > 1) // true(至少一个满足)
[1, 2, 3].every(v => v > 1) // false(全部满足)

实用技巧

  • 只需检查存在性时,更推荐用includes (而不是 indexOf
  • find 找到即停止,比 filter 性能更优(尤其大数据量时)
  • filter开发中运用场景更多

三、遍历与迭代方法

根据不同场景选择遍历方式。

方法特点示例
forEach()简单遍历,无返回值arr.forEach(v => console.log(v))
for...of支持 break 中断for(let v of arr) { ... }
map()返回映射后的新数组arr.map(v => v * 2)
reduce()累计计算结果arr.reduce((sum, v) => sum + v, 0)
reduceRight()从右向左累计arr.reduceRight((acc, v) => acc + v)

性能对比

  • 纯遍历:for 循环 > for...of > forEach(但差异在多数场景可忽略)
  • 需中断遍历时,优先选 for...offor 循环
  • 需返回新数组时,mapforEach + push 组合更简洁

四、数组转换方法

实现数组与其他数据结构间的转换,或重组数组结构。

1. 类型转换
// 数组 ↔ 字符串
['a', 'b'].join('-') // 'a-b'(自定义分隔符)
['a', 'b'].toString() // 'a,b'(固定逗号分隔)
'abc'.split('') // ['a', 'b', 'c'](字符串→数组)
2. 结构转换
// 多维数组扁平化
[1, [2, 3]].flat() // [1, 2, 3](默认展开1层)
[1, [2, [3]]].flat(2) // [1, 2, 3](指定展开深度)// 映射+扁平化
['hello', 'world'].flatMap(word => word.split('')) 
// ['h','e','l','l','o','w','o','r','l','d']
3. 数组合并与切片
// 合并数组
[1, 2].concat([3, 4]) // [1, 2, 3, 4](创建新数组)// 数组切片
[1, 2, 3, 4].slice(1, 3) // [2, 3](索引1到3,不包含3)

注意事项

  • concat 可合并多个数组,比 push(...arr) 更高效(避免栈溢出)
  • slice 常用于数组浅拷贝const copy = arr.slice()

五、重排序与填充方法

直接修改原数组,用于数据重组和初始化。

// 排序(默认按字符串Unicode排序)
[3, 1, 2].sort() // [1, 2, 3]
[3, 1, 2].sort((a, b) => b - a) // [3, 2, 1](自定义排序)// 反转
[1, 2, 3].reverse() // [3, 2, 1]// 填充
new Array(3).fill(0) // [0, 0, 0](快速初始化)
[1, 2, 3].fill(0, 1) // [1, 0, 0](从索引1开始填充0,(value 必填,startIndex 可选,endIndex 可选默认是arr.length))

关键点

  • sort 必须传入比较函数(如 (a, b) => a - b)才能正确排序数字,a - b 升序,b - a降序
  • fill 常用于初始化定长数组,比循环赋值更简洁

六、其他实用方法

满足特定场景的高级操作需求。

// 数组自复制
[1, 2, 3, 4].copyWithin(0, 2) // [3, 4, 3, 4](从索引2复制到索引0)// 安全数组创建
Array.of(3) // [3](避免 new Array(3) 创建空槽数组)

七、重要概念区分:面试常问

1. 是否改变原数组(important)
改变原数组不改变原数组
push/popconcat
unshift/shiftslice
splicemap
sort/reversefilter
fill/copyWithinfind/findIndex
2. ES5 vs ES6新增方法
  • ES5indexOfforEachmapfilterreduce
  • ES6+find/findIndexincludesflatflatMapArray.of

总结

  1. 高频使用的方法push/popmapfilterreduce
  2. 需要明确:哪些数组方法会改变原数组,提问可能结合vue2的数组响应式操作方法
  3. 链式调用:如 filter().map().slice()
  4. 性能敏感场景:大数据量时慎用 spliceshift(索引更新开销大)
http://www.dtcms.com/wzjs/537111.html

相关文章:

  • 网站标题关键词成都培训学校网站建设
  • 网站怎么做关键词内链网页设计与制作实训总结2000字
  • 网站如何上传泰州建设局网站安监站通报
  • 深圳福田站手机微信打开文件是乱码
  • 建站模板怎么选武陵天下网站建设
  • 网站登录失败怎么回事阜阳建设网站公司
  • 河北建设厅身份认证锁登录网站专业做礼品团购的网站
  • 免费网站设计内江如何做百度的网站
  • 免费开源的网站系统产品推销
  • 网站建设及网络推广图片编辑器在线
  • 做it行业招标网站有哪些网站移动端就是app吗
  • 查询行业信息的网站新网建立网站
  • 用jsp做的可运行的网站天台县低价网站建设
  • 网站是com好点还是cn百度做的网站字体侵权
  • 网站开发过程阶段做房地产用什么网站好
  • 做网站的行业平台中国做网站公司排名
  • 太湖县住房与建设局网站品牌营销做得好的品牌有哪些
  • 为什么找别人做网站现在app用什么开发
  • 网站动态页面抚顺网站建设推荐
  • 保定模板建站哪家好热点新闻事件素材
  • 烟台网站建设做设计找图有哪些网站有哪些
  • 网站建设与管理外贸网站免费建站
  • 高端电子商务网站建设wordpress大家都在搜
  • 网站建设 开题报告网站建设中 油财宝
  • 南京百度网站排名pc开奖网站建设
  • 菏泽市建设职工培训中心网站上海建设工程信息查询网
  • 网络工程师自学网站网页设计导航
  • 设计师网站pintset网站模板下载工具
  • 河北网站seo地址亿赐客网站
  • 网站主机设置方法金数据可以做网站吗