前言
数组是我们日常开发工作中常用的数据结构,说简单也简单,说复杂也复杂,今天一翻红宝书才发现之前有好多东西都不知道,今天就把我翻红宝书的结果和大家分享一下。
1.创建数组
Javascrpti提供了几种创建数组的方式,首先就是们可以使用Array
构造函数,如果知道数组的长度,可以直接传入数组长度,返回一个规定长度的数组,也可以传入数组具体的值。
const arr = new Array(2)
console.log(arr) // [empty × 2]
const arr1 = new Array(2,3,4)
console.log(arr1) // [2, 3, 4]
在使用构造函数Array
时,也可以省略new关键字,结果和new Array
一样
除此之外我们还可以使用数组字面量的方式创建数组。
const a1 = [] // 创建一个空数组
const a2 = [1,2,3] //创建一个长度为3的数组
ES6还新增了两个用于创建数组的函数Array.from()
和Array.of()
,Array.form()用于将类数组转化为数组,Array.of用于将参数转化为数组。
const set = new Set().add(1).add(2)
const arr1 = Array.from(set) // arr = [1,2]
consr arr2 = Array.of(1,2,3,5) // arr1 = [1,2,3,4]
还可以使用,
来表示数组空位,只是占个位置,没有具体值
const arr = [,,,]
arr.length // 3
2.检测数组
ECMAScript提供了两种方法来判断一个变量是不是数组instanceof
和isArray
const arr = []
console.log(arr instanceof Array) // true
console.log(Array.isArray(arr)) // true
3.复制填充方法
ES6新增了两个方法:批量复制方法fill()和填充数组方法copyWithin()。
其中fill接收3个参数,第一个参数为需要填充的值,第二个及第三个为填充起始位置。是选填参数。
const arr = [0,0,0,0,0,0,0]
console.log(arr.fill(1)) // [1,1,1,1,1,1]
console.log(arr.fill(1,3,5)) // [0,0,0,1,1,1,0]
// 若第二个和第三个参数为负数,则用数组长度加上参数后再计算
copyWithin()
方法,在当前数组内部,将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组,该方法也提供3个参数,第一个参数为必填,表示替换开始位置,第二、三个参数为复制起始位置,为选填参数,负数仍然用数组偿长度加上参数再计算。
const arr = [1,2,3,4,5]
console.log(arr.copyWithin(3)) // 将12345从第3为开始替换,超出的省略 [1,2,3,1,2]
console.log(arr.copyWith(1,3,4)) 将第3 到4 位 替换从第一位开始的位置,不包括结束位置。 [1,4,3,4,5]
4.栈方法
ECMAScript还提供了类似栈操作数组的方法:入栈(push)和出栈(pop)
// push在数组末尾追加数据
const arr = [1,2]
arr.push(3) // [1,2,3]
// pop弹出数组最后一位
const a = arr.pop()
console.log(a,arr) // 3 [1,2]
5.队列方法
ECMAScript还提供了类似队列操作数组的方:入队列(unshift)和出队列(shift)
// unshift在数组首位前插入数据,shift删除数组首位数据
const arr = [1,2]
arr.unshift(0) // arr = [0,1,2]
arr.shift() // arr = [1,2]
6.排序方法
数组有两个排序方法:反转(reverse)和排序(sort),顾名思义,reverse直接把数组按照倒序返回,sort接收一个比较函数,按照比较函数的值返回升序或降序
const arr = [1,2,3]
arr.reverse() // [3,2,1]
arr.sort((a,b) => a<b) // 升序 a>b 降序
7数组操作方法
1.concat()拼接数组
const arr = [1,2]
const arr1 = [3,4]
const arr2 = arr.concat(arr1) // [1,2,3,4]
2.slice方法,该方法接收两个参数,第一个位开始位置(必填),第二个位结束位置(选填)但不包括结束位置,返回一个从开始位置到结束位置的新数组,且不影响原数组。
const arr = [1,2,3,4,5]
arr.slice(1) // [2,3,4,5]
arr.slice(1,4) // [2,3,4]
3.splice(),该方法是数组最强大的方法,可以删除、插入、替换元素。
// 删除 接收两个参数, 删除开始位置 和 删除数量
const arr = [1,2,3,4]
arr.splice(1,2) // arr = [1,4]
// 插入 接收多个参数,第一个表示插入位置 第二个0表示不删除,之后的参数表示要插入的数据
arr.splice(1,0,5,6) // arr = [1, 5, 6, 2, 3, 4]
// 替换 接收多个参数 第一个表示插入位置 第二个表示要删除的个数,之后的参数表示要插入的数据
arr.splice(1,2,5,6) // arr = [1,5,6,4]
7.数组遍历方法
数组遍历方法在之前的ES6新增方法有讲到,今天就不再讲了。
最后
以上就是今天数组的内容,如果对你有一点帮助,就请点个赞吧。