JavaScript面试:数组高级操作与技巧解析
需积分: 0 144 浏览量
更新于2024-09-04
收藏 60KB PDF 举报
本文主要探讨了JavaScript面试中与数组相关的高级操作技巧,包括扁平化n维数组、去重、求最大值、求和、排序以及对象与数组之间的转换。文章通过实例代码详细阐述了这些操作的具体实现。
1. 扁平化n维数组
在JavaScript ES10中,引入了`Array.flat()`方法用于扁平化数组。例如:
```javascript
[1, [2, 3]].flat(2) // [1, 2, 3]
[1, [2, 3, [4, 5]]].flat(3) // [1, 2, 3, 4, 5]
[1, [2, 3, [4, 5]]].toString() // '1,2,3,4,5'
[1, [2, 3, [4, 5]]].flat(Infinity) // [1, 2, 3, 4, 5]
```
如果想要无限维度的扁平化,可以使用`Infinity`作为参数。此外,也可以通过递归和`concat()`方法实现:
```javascript
function flatten(arr) {
while (arr.some(item => Array.isArray(item))) {
arr = [].concat(arr);
}
return arr;
}
flatten([1, [2, 3]]) // [1, 2, 3]
flatten([1, [2, 3, [4, 5]]) // [1, 2, 3, 4, 5]
```
2. 去重
可以使用ES6的Set数据结构配合`Array.from()`或扩展运算符(...)来实现数组去重:
```javascript
Array.from(new Set([1, 2, 3, 3, 4, 4])) // [1, 2, 3, 4]
[...new Set([1, 2, 3, 3, 4, 4])] // [1, 2, 3, 4]
```
Set只存储唯一值,`Array.from()`将Set转化为数组,而扩展运算符则将Set中的元素展开成数组。
3. 其他操作
- 求最大值:可以使用`Math.max()`配合扩展运算符,例如`Math.max(...arr)`。
- 求和:使用`reduce()`方法,如`arr.reduce((a, b) => a + b, 0)`。
- 排序:使用`sort()`方法,如`arr.sort((a, b) => a - b)`进行升序排列。
- 对象与数组的转化:可以使用`Object.values()`获取对象的所有值为数组,`Object.entries()`则将键值对转化为数组。
这些高级操作对于JavaScript开发者来说至关重要,尤其是在面试和实际项目开发中,熟练掌握这些技巧可以提升代码质量和效率。
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
2020-10-25 上传
2021-01-21 上传
2020-10-25 上传
2020-10-22 上传
2020-12-09 上传
weixin_38649315
- 粉丝: 6
- 资源: 932
最新资源
- 2代身份证识别方案_智能家居物联网开发PCB设计方案.rar
- 智能机器人创意竞赛 主题一 实物组.zip
- 基于ros的人脸追踪,下位机采用stm32,舵机云台
- 某驴网发帖全家桶,有安卓有PC-易语言
- sentinel-datasource-nacos-1.8.0.jar中文-英文对照文档.zip
- Matlab_simulink_it_radarmatlab_radarsimulink_radar_matlabsimulin
- poch_app:WWC的申请
- material-ui-course-project-manager:这是Udemy课程“使用Material-UI和ReactJS实现高保真设计”中项目2的最终代码。
- 行业文档-设计装置-一种直接发生式太阳能空调系统.zip
- 1ndiList:侦听自定义WordList生成器
- 基于STM32的IAP升级程序(Bootloader)
- JavaDocumentProject
- mybatis-spring-boot-autoconfigure-2.2.0.jar中文-英文对照文档.zip
- 灵匣网姓名测试系统 1.0
- 行业文档-设计装置-一种直接测定早龄期混凝土与钢筋粘结性能的测试装置及测定方法.zip
- 2.4G无线数据传输GPS无线定位器_智能家居物联网开发PCB设计方案.rar