检测数组
- 使用 instanceof
if( value instanceof Array ){
//操作数组
}
- 使用 Array.isArray()
if( Array.isArray(value)) {
//操作数组
}
迭代器方法
- keys()—— 返回数组索引的迭代器
- values ()—— 返回数组元素的迭代器
- entries ()—— 返回 索引/值对 的迭代器
使用 ES6 的解构也可以拆分键/值对
const a = ["foo","boo"]
for ( const [idx, element] of a.entries()) {
//操作数组
}
转换方法(将数组每个值的等效字符拼接成一个逗号分隔的字符串)
- valueOf ()
- toString()
- join()
栈方法(后进先出)
- push()—— 将任意数量的参数添加到数组的末尾,并返回最新长度
- pop()—— 删除数组最后一项,同时减少数组的length值,返回被删除的项
队列方法(先进先出)
- shift()—— 删除数组的第一项并返回他,同时减少数组的length值
- unshift()—— 将任意数量的参数添加到数组的头部,然后返回最新的长度
shift()和 push()、unshift()和 pop()可以模拟队列
排序方法
- reverse()—— 将数组元素反向排列
- sort() —— 按照升序或者降序,从新排列数组元素;他可以接收一个比较函数(接收俩参数,第一个参数应该在第二个参数的前面,则返回负值;如果俩个参数相等,则返回0; 如果第一个参数应该在第二个参数后边,则返回正值)
let values = [0,1,2,3]
values.sort((a, b) => a < b ? 1 : a > b ? -1 : 0)
alert(values) // 3,2,1,0
操作方法
- concat()—— 首先 创建一个当前数组的副本,然后将他的参数添加到副本的末尾,最后返回这个新构建的数组
- slice()—— 创建一个包含原数组一个或者多个元素的新数组,可以接收一个或俩个参数
- splice()—— 主要目的是原在数组中间删除、替换、插入元素、可以接收俩个或三个参数
搜索和位置方法
- indexOf()—— 从数组第一项开始往后搜索,找到返回下标,反之返回-1
- lastIndexOf()—— 从数组最后一项开始往前搜索,找到返回下标,反之返回-1
- includes()—— 从数组第一项开始往后搜索,返回布尔值、表示是否找到一个与指定元素匹配的项
断言函数(接收三个参数,当前搜索的元素 ,索引,数组本身)
- find()—— 从最小的索引开始,返回第一个匹配的元素
- findIndex()—— 从最小的索引开始、返回第一个匹配的索引
迭代方法
- every()—— 参数为一个函数(当前项,下标,遍历的数组), 每一项都为 true 返回 true
- filter()—— 参数为一个函数(当前项,下标,遍历的数组), 函数返回为true的项会组成数组之后返回,(筛选满足给定条件的元素)
- forEach()—— 参数为一个函数(当前项,下标,遍历的数组), 遍历某一项,没有返回值
- map()—— 参数为一个函数(当前项,下标,遍历的数组), 将数组的每一项加工处理,并将处理后的每一项组成数组之后返回
- some()—— 参数为一个函数(当前项,下标,遍历的数组), 只要有一项为 true 返回 true
归并方法(迭代数组所有项,并在此基础上构建一个最终的返回值)
- reduce()—— 从前往后遍历
arr.reduce(callback,[initialValue])
var sum = arr.reduce(function(prev, cur, index, arr) {
// 具体逻辑
return prev + cur;
},初始值)
- reduceRight() —— 从后往前遍历
他们都接收四个参数
- 提供的初始值 或 上一次调用回调返回的值
- 数组中当前被处理的元素
- 当前元素在数组中的索引
- 调用 reduce 的数组