0
点赞
收藏
分享

微信扫一扫

深入理解Array类型

秀儿2020 2022-02-05 阅读 127

数组在前端开发中起到很重要的作用。下面主要是针对Array类型进行剖析。
下文主要参考:javascript中深入理解Array
一、基本定义

Array对象用于在单个变量中存放多个值。
let array = [true, 12, 'is true']
这里array是一个数组,数组中的值可以是不同类型的值。数组的长度和大小是可变的。

二、创建方式
(1)、Array构造函数
第一种方式就是通过Array构造函数来实现。

let newArr = new Array(5)
这里是的5表示创建的数组长度为5,并且该数组为空。

(2)、数组字面量
第二种方式可以通过数组字面量来实现。

let newArr = []  //创建一个新的数组
let newArr = [1,2,3,4,5]   //创建存在值的数组。
这样就不需要调用Array构造函数了。

三、length属性
这里的length属性是可读的,也是可写的,我们不仅可以通过读取数组的length属性来拿到数组的长度,也可以通过修改数组的length属性来修改数组的值。

let newArr = [1, 2, 3, 4, 5, 6]
console.log(newArr) //[1,2,3,4,5,6]
newArr.length = 3
console.log(newArr) //[1,2,3]
newArr.length = 5
console.log(newArr) //[1,2,3, <2 empty items>]

四、数组的检测
我们可以通过instanceofArray.isArray来进行判断。首先我们说一下instanceof,如果在一个网页中存在多个框架,instanceof就不再使用,因为存在多个框架,就会存在多个不同的Array构造函数,这种情况就无法使用instanceof来进行判断。

let newArr = [1,2,3,4]
console.log(newArr instanceof Array)    //true

第二种方法是使用Array.isArray

let newArr = [1,2,3,4,5]
console.log(Array.isArray(newArr))  //true

五、数组的转化
我们可以将数组转化为字符串,可以使用toString()方法,其内部是对每一项都调用toString()方法。

let newArr = [1,2,3,4,5]
console.log(newArr.toString())   //1,2,3,4,5

我们也可以将数组转化为字符串,使用toLocalString()方法,其内部是对每一项都调用toLocaleString()方法。

let newArr = [1,2,3,4,5]
console.log(newArr.toLocaleString())  //1,2,3,4,5

可以使用join方法来对数组进行转化。

let newArr = [1,2,3,4,5]
console.log(newArr.join())  //1,2,3,4,5

六、栈方法
我们可以使用数组来实现栈的数据结构,栈的结构是后进先出,这样可以使用push方法来将元素放入,使用pop方法将元素弹出。

let newArr = [1,2,3,4,5]
let res = newArr.push(6)
console.log(res)     //6
let item = newArr.pop()
console.log(item)   //6
console.log(newArr)  //[1,2,3,4,5]

七、队列方法
我们可以使用数组来实现队列方法,队列是先进先出,在js中我们可以使用push来模拟进入队列的情况,可以使用shift()来模拟从队列首部删除的情况。

let newArr = [1,2,3,4,5]
newArr.shift()   //1
newArr.push(6)   //[2,3,4,5,6]

八、排序方法
对数组进行排序存在两种方法,一种是使用sort,另一种使用reverse
1、sort方法

let nums = [1, 5, 10, 15, 20]
nums.sort()
console.log(nums)  //[1,10,15,20,5]
这里为什么会显示这样排序,因为sort方法对数组中的每一个元素都调用
toString()方法,然后进行ascill码进行比较,数字类型的数据也会更改为字符串
类型的数据进行比较。
let nums = [1, 5, 10, 15, 20]
nums.sort((a, b) => a - b)
console.log(nums) //[1,5,10,15,20]

2、reverse()方法
reverse方法可以对数组进行翻转。

let newArr = [1, 2, 3, 4, 5, 12, 11]
console.log(newArr.reverse())    //11,12,5,4,3,2,1

九、操作方法
1、concat()方法
concat方法的参数可以是单个元素,数组,实现数组之间的拼接,并且返回一个新的数组。

let newArr = ["yellow", "green", "red"]
let arr2 = newArr.concat("black", ["orange"])
console.log(arr2)    //[ 'yellow', 'green', 'red', 'black', 'orange' ]
console.log(newArr)  //[ 'yellow', 'green', 'red' ]

2、slice()方法
数组的slice()方法可以实现得到数组的子数组的功能,返回的是一个新的数组。
如果为一个参数,则表示从当前值开始,到最后结束返回。
如果为两个参数,并且第一个参数小于第二个参数,在截取两者中间的数组返回,注意不包括第二个参数下标对应的值
如果为两个参数,并且第一个参数大于等于第二个参数,则截取的为一个空数组。
如果其中存在一个负数,则表示的下标应该加上数组的长度。

(1)
let newArr = ["yellow", "green", "red"]
let arr = newArr.slice(1,2)
console.log(arr)   //"green"
(2)
let newArr = ["yellow", "green", "red", "black"]
let arr = newArr.slice(-2, -1)
console.log(arr)     //["red"]

(3)、splice()方法
splice()方法存在三种功能,第一种是插入,第二种是删除,第三种是替换。
splice()可以存在任意参数。splice方法是在原数组上进行更改的。

(1)、删除
let newArr = ["yellow", "green", "red", "black"]
let arr = newArr.splice(1,2)
console.log(arr)    //["green","red"]
console.log(newArr) //["yellow", "black"] 
(2)、替换
let newArr = ["yellow", "green", "red", "black"]
let arr = newArr.splice(1,2,"pink")
console.log(newArr)   //["yellow", "pink","black"]
console.log(arr)      //["green", "red"]
(3)、插入
let newArr = ["yellow", "green", "red", "black"]
let arr = newArr.splice(1, 0, "pink")
console.log(newArr) //["yellow", "pink","green","red","black"]
console.log(arr) // []

十、位置方法
位置方法存在两个,一个是indeOflastIndexOf。下面将对这两个方法进行分别进行分析。

这里表示传入一个参数,indexOf默认从首部开始查找,lastIndexOf默认从尾部开
始查找

let newArr = ["yellow", "green", "red", "green", "black"]
let index = newArr.indexOf("green")
console.log(index) //1
let lastIndex = newArr.lastIndexOf("green")
console.log(lastIndex) //3
传入第二个参数表示从哪里开始查找。

let newArr = ["yellow", "green", "red", "green", "black"]
let index = newArr.indexOf("green", 2)
console.log(index) //3
let lastIndex = newArr.lastIndexOf("green", 2)
console.log(lastIndex) //1     

十一、数组的迭代方法
(1)、every()

遍历每一个数组,如果每一个数组都满足某一个条件,则返回true,如果存在一个不满足则返回falselet newArr = [1,2,3,4,5,6,7,8]
let result = newArr.every(function(item, index, array) {
  return item < 10
})
console.log(result)  //true

(2)、some()

some函数遍历每一个元素,如果存在一个元素满足条件的,则返回true,否则返回
falselet newArr = [1,2,3,4,5,6,7,8]
let result = newArr.some(function(item, index, array) {
  return item > 10
})Ar
}, 0)

console.log(result)   //36
举报

相关推荐

0 条评论