最近在加强 JavaScript 基础的学习,这里整理一下 Array,主要是一些数组方法。
¶一、扁平化多维数组
这个知识点是在一次面试中被问到的,没答上来,这里作下记录。
¶1、Array.flat(n)
Array.flat(n) 方法会按照一个可指定的深度(n,默认值为 1)递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
1 | let arr1 = [1, 2, [3, 4]] |
也可以利用递归和 concat 方法实现扁平数组:
1 | function flatten(arr) { |
¶2、Array.toString()
1 | //使用 Array.toString() 可以将数组转为字符串,再去除`,`即可得到数组 |
¶3、更多实现方法见 Array.prototype.flat()
¶二、数组去重
¶1、Array.from、Set
Array.from 可以将类数组转化为数组。Set 是 ES6 语法新出的一种定义不重复数组的数据类型。… 是扩展运算符,将 set 里面的值转化为字符串。
1 | let list = [1, 2, 3, 3, 4, 4] |
¶2、用map
存储数据,循环数组进行比对
1 | distinct(list) { |
¶三、数组排序
¶1、Array.sort
sort 是 Array 内置的排序方法,参数为一个函数。默认排序顺序是在将元素转换为字符串,然后比较它们的 UTF-16 代码单元值序列时构建的。由于它取决于具体实现,因此无法保证排序的时间和空间复杂性。
1 | let list = [2, 3, 1, 4] |
¶2、冒泡排序
参考另一篇随笔:JS 中的冒泡排序
1 | let list = [2, 3, 1, 1, 4] |
¶3、选择排序
1 | selectSort(list) { |
¶三、数组的最大值
¶1、Math.max()
Math.max() 是 Math 对象内置的方法,参数是字符串。
1 | Math.max(...[2, 3, 1, 4]) // 4 |
¶2、先排序再取最大值
¶四、合并数值
¶1、简洁写法
1 | [1, 2, 3, 4].concat([5, 6]) // [1, 2, 3, 4, 5, 6] |
¶2、map、push
1 | let list2 = [1, 2, 3, 4] |
¶五、判断是否包含值
¶1、includes、indexOf、find、findIndex
1 | [1, 2, 3, 4].includes(4) // true |
¶2、some
1 | [1, 2, 3, 4].some(i => { return i === 4 }) // true,如果不包含则返回 false |
¶六、过滤数组
¶1、filter
1 | [1, 2, 3, 4].filter(i => i > 2) // [3, 4] |