JavaScript数组基础详解

前言

数组是我们日常开发工作中常用的数据结构,说简单也简单,说复杂也复杂,今天一翻红宝书才发现之前有好多东西都不知道,今天就把我翻红宝书的结果和大家分享一下。

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提供了两种方法来判断一个变量是不是数组instanceofisArray

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新增方法有讲到,今天就不再讲了。

最后

以上就是今天数组的内容,如果对你有一点帮助,就请点个赞吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值