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

企业做网站电话约见客户的对话北京网站建设 一流

企业做网站电话约见客户的对话,北京网站建设 一流,wordpress手机登录代码,网站所有权 备案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/a/609329.html

相关文章:

  • Android Studio + Gemini 移动开发领域的一次范式转移
  • 基于多源政策信号解析与量化因子的“12月降息预期降温”重构及黄金敏感性分析
  • LinuxC语言文件i/o笔记(第十七天)
  • Spring AI Evaluation Testing(评估测试)
  • 太仓营销型网站建设四平网站建设怎么选
  • 记一次慢接口优化:载体详情页从90秒到800毫秒的性能提升实战
  • 微软Visual Studio 2026正式登场,AI融入开发核心操作体验更流畅
  • 微软vcpkg包管理工具如何使用?
  • 提供小企业网站建设织梦网站默认密码忘记
  • 基于XTOM蓝光扫描的复杂中小尺寸零件3D形貌重建与全尺寸误差分析
  • Qt 自定义菜单栏 / 工具栏按钮 QToolButton + InstantPopup 详细解析
  • 2025年AI生成PPT工具深度评测:技术对比与实战分析
  • 智慧园区:科技赋能下的安全便捷生活新范式
  • 华为WATCH 5:连接心与心,让生活更美好
  • 内容管理系统解决方案架构及实施
  • 建设银行网站的服务管理商业机构的网站是什么
  • Python与大数据:使用PySpark处理海量数据
  • Django 缓存详解与应用方法
  • SDN架构详解
  • Spring Boot缓存实战:@Cacheable注解详解与性能优化
  • LeetCode热题100--17. 电话号码的字母组合
  • C++初阶(07):STL简介
  • 中国哪些网站做软装建设彩票网站合法吗
  • 百度网站评分椒江做网站
  • yolov8目标检测训练在rk3588上部署
  • 学术数据可视化:高效图表工具助力科研数据精准呈现
  • 焦作高端网站建设宁波seo外包服务平台
  • Apple 官方提供 Xcode 周边实用工具集,包含CarPlay 模拟器,网速限制等 Additional Tools for Xcode 26.1,
  • 《隐藏(Hide)》
  • 基于Mask R-CNN的汽车防夹手检测与识别系统