复习第一轮-各种数组方法

背景

最近面试被问懵了,所以必须复习一波数组

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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值