JavaScript面试:数组高级操作与技巧解析

需积分: 0 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开发者来说至关重要,尤其是在面试和实际项目开发中,熟练掌握这些技巧可以提升代码质量和效率。