检测数组
在只有一个网页(只有一个全局作用域的情况下),我们使用instanceof。
但是若是有多个执行上下文,就会有两个不同版本的Array函数。因此,ES中提供了Array.isArray()方法,可以检测一个值是否为数组。
栈方法
何为栈?栈是一种后进后出(LIFO,Last-In-First-Out)的结构,简而言之,就是先添加进去的最先被删除。
push :推入。添加到数组末尾,返回新数组的长度。 pop:弹出。删除数组最后一项,返回被删除的项。
队列方法
何为队列?队列是一种先进先出(FIFO,First-In-First-Out)的结构,换而言之,就是在数组尾部添加数据,在数据开头获取到数据。
shift:删除数组第一项,并且返回它,数组的长度减1. unshift:执行跟shift相反的操作,就是在数组开头可以添加任意多个值,然后返回新的数组长度。
排序方法
reverse:反转数组。 sort:对数组进行排序。原理是sort()会调用String()转型函数,将所有数据转换成字符串进行比较、排序。 默认情况下,sort会直接对数组进行升序排列,但是如果数组中有不同类型的数据,比如字符串10,和字符串5,那么会被认为是字符串10<字符串5。
我们加入箭头函数:
nums.sort((a, b) => a - b) //升序排列
nums.sort((a, b) => b - a) //降序排列
操作方法
concat:创建新数组。它首先会先创建一个当前数组的副本,然后把它所传入的一个或多个数组添加到副本末尾。
slice:用来创建一个包含原数组中一个或者多个元素的新数组。
删除。传入2个参数:要删除的第一个元素的位置和要删除元素数量。(面试:比如说想取一个数组的前七个元素)
let arr = ['q', 'a', 'z', 'w', 's', 'x', 'e', 'd', 'c']
let arr1 = arr.slice(0, 7)
alert(arr1)
插入/替换。传入3个参数:开始位置、要删除元素的数量、要插入的元素。
every:每一项函数都返回true,则这个方法返回true。
some:某一项函数都返回true,则这个方法返回true。
filter:函数返回true的项,会组成数组之后返回。
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
let arr1 = arr.filter((item, index, array) => item > 3)
alert(arr1) //4,5,6,7,8,9
这个方法非常适合用来从数组中筛选出满足条件的元素。
forEach:对每一项运行传入的函数,没有返回值。相当于调用了for循环遍历数组。