背景
最近面试被问懵了,所以必须复习一波数组
ES5
栈方法:LIFO先进后出结构
puth()
pop()
队列方法:FIFO先进先出结构
shift() 数组前端删除值
unshift() 数组前端添加值
重排序方法:
reverse() 反转数组项顺序
sort() 排序算法 默认升序
操作方法
concat() 数组拷贝
slice(开始位置下标,结束位置下标) 数组切片 不影响原数组,参数可选
splice() 删除:splice(0,2)从0删除两项,splice();splice(2,0,'red'),删除项0,插入red
位置方法
indexOf() 找不到返回-1 arr.indexOf(4) 查找4
lastIndexOf() 找不到返回-1
迭代方法
every() //每一项为true 则返回true
filter() //过滤器,返回结果true的项组成的数组
forEach() //遍历器
map() // 返回所有调用结果组成的数组
some() //任意一项返回true 则返回true
归并方法
reduce() //arr.reduce((prev,curv, index,array)=>{return prev+curv})
reduceRight() //从右算起
ES6
扩展运算符...
扩展运算符内部调用的是数据结构的 Iterator 接口,因此只要具有 Iterator 接口的对象,都可以使用扩展运算符
1.复制数组:arr2=[...arr1]
2.合并数组:arr3=[...arr2,...arr1]
...和concat()两种都是浅拷贝
Array.from()
将类数组转换为数组,只要部署了iterater接口的数据结构,Array.from都可以转换为数组
//es5
[].slice.call(arr)
//es6
Array.from(arr)
1.复制数组,深拷贝
2.可接受两个参数,实现类型map的效果
Array.from([1,2,3], x=>x*x)
//[1,4,9]
3.可将数组中false值转换为0
Array.from([1,,2,false], n=>n||0)
//[1,0,3,0]
4.判断数据类型
function typeOf(){
return Array.from(arguments, value=> typeof value)
}
typeOf(null, [], NaN)
//['object', 'object', 'number']
Array.of()
将一组值转换为数组
Array.of() // []
Array.of(undefined) // [undefined]
Array.of(1) // [1]
Array.of(1, 2) // [1, 2]
数组实例的find()
查找符合条件的第一个值
[1, 4, -5, 10].find((n) => n < 0)
// -5
数组实例的findIndex()
查找符合条件的第一个值的索引
数组实例的includes()
表示某个数组是否包含给定的值
[1, 2, 3].includes(2) // true
[1, 2, 3].includes(4) // false
[1, 2, NaN].includes(NaN) // true
数组数量的flat()
多维数组转换为一维数组
[1,2,3,[2,3]].flat()
//[1,2,3,2,3]
[1,2,3,[[1,2],3]].flat()
//[1,2,3,[1,2],3]
//flat()可接受一个参数,表示拉平的层数,默认是1,可用infinity无限拉平
如果数组有空位,会跳过空位
[1,2,,3].flat()
//[1,2,3]
本文主要是参考阮一峰老师的文章进行复习,如想查看详细:http://es6.ruanyifeng.com/