归并方法
- reduce() 前往后遍历
- reduceRight() 从后往前遍历 ```javascript let values = [1, 2, 3, 4, 5]; // reduce((上一个归并值, 当前项, 当前项索引, 数组本身)=>{return 结算值}, 起点值)
// 没有起点值 console.log(values.reduce((prev, cur, index, array) => prev + cur)); // 15
// 有起点值 console.log(values.reduce((prev, cur, index, array) => (prev + cur), 10)); // 25
<a name="UISqx"></a>#### 迭代方法1. every() 每项返回true,该方法返回true1. filter() 返回true的项组成数组后返回1. forEach() 没有返回值1. map() 返回由每次函数调用结果构成的数组1. some() 有一项返回true,该方法返回true```javascriptlet numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];// every()let everyResult = numbers.every((item, index, array) => item > 2);console.log(everyResult); // false// some()let someResult = numbers.some((item, index, array) => item > 2);console.log(someResult); // true// filterlet filterResult = numbers.filter((item, index, array) => item > 2);console.log(filterResult); // [3, 4, 5, 4, 3]// map()let mapResult = numbers.map((item, index, array) => item * 2);console.log(mapResult); // [2, 4, 6, 8, 10, 8, 6, 4, 2]// forEach()numbers.forEach((item, index, array) => {// 执行某些操作});
查找元素
- indexOf()
- 前向后查找,返回查找元素位置,没找到返回-1
- lastIndexOf()
- 后向前查找,返回查找元素位置,没找到返回-1
- includes()
- 返回布尔值
- find()
- 接收两个参数,匹配到第一个结果后停止执行
- 参数(两个)
- 参数1:断言函数。断言函数接收3个参数:元素、索引、数组本身,找到一个就不再继续查找
- 参数2(可选): 指定断言函数内部this
- 返回值:
- 匹配到的第一个元素
- findIndex()
- find()使用方法一样,返回值为匹配到的第一个元素索引值,匹配到第一个结果后停止执行 ```javascript const arr = [‘刘’, ‘关’, ‘张’]; console.log(arr.indexOf(‘张’)) // 2 console.log(arr.indexOf(‘曹’)) // -1 console.log(arr.includes(‘刘’)) // true
const people = [ { name: “Matt”, age: 27 }, { name: “Nicholas”, age: 29 } ]; // find() console.log(people.find((element, index, array) => element.age < 28)); // {name: “Matt”, age: 27} // findIndex() console.log(people.findIndex((element, index, array) => element.age < 28)); // 0
<a name="FNFNR"></a>#### 截取**1. slice() 返回截取的新数组**> 不改变原数组**2. splice() 可删除、插入、替换**> 改变原数组,返回删除元素- 删除:传2个参数,参数1:开始位置,参数2:删除个数- 插入:传3个参数,参数1:开始位置,参数2:0(要删除的数量),参数3:要插入的元素(可多个)- 替换:传3个参数,参数1:开始位置,参数2:要删除元素数量,参数3:要插入的元素(可多个)```javascriptconst arr = [1,2,3,4,5]// 1. slice(开始,结束) 不包含结束位置//slice创建一个新数组,不影响原数组console.log(arr.slice(1,3)) // [2, 3]// 2. splice()const arr = [1,2,3,4,5]// 删除console.log(arr.splice(1,3)) // [2, 3, 4]console.log(arr) // [1, 5]// 插入console.log(arr.splice(1, 0, 'liu', 'guan')) // []console.log(arr) // [1, 5] // [1, "liu", "guan", 5]// 替换console.log(arr.splice(1, 2, 2, 3)) // ["liu", "guan"]console.log(arr) // [1, 2, 3, 5]
插入与移除
- push() 添加到末尾,返回数组最新长度,可一次添加多个
- unshift() 添加到开头,返回数组最新长度,可一次添加多个
- pop() 删除最后一项,返回被删除值
- shift() 删除第一项
const arr = ['刘', '关', '张'];console.log(arr.push('赵', '孙')) // 5console.log(arr.pop()) // "孙"console.log(arr.shift()) // "刘"console.log(arr.unshift('诸')) // 4console.log(arr) // ["诸", "关", "张", "赵"]
排序
借用sort()实现排序
function compare(value1, value2) {if (value1 < value2) {return 1;} else if (value1 > value2) {return -1;} else {return 0;}}let values = [4, 1, 19, 10, 15];values.sort(compare);console.log(values); // [19, 15, 10, 4, 1]
from()、of()
// 1. from() 将类数组转换为数组,字符串、Arguments对象、Map、Set等console.log(Array.from("Matt")); // ["M", "a", "t", "t"]// 2. of() 将一组参数转换为数组console.log(Array.of(1, 2, 3, 4)); // [1, 2, 3, 4]
空位
// 空位console.log(Array.from({length:3})) // [undefined, undefined, undefined]
填充
// fill(填充内容, 开始索引, 结束索引(不包含))console.log(Array.from({length:3}).fill('张飞',1,2)) // [undefined, 张飞, undefined]
转换为字符串
// 1. toString()const arr = ['刘', '关', '张'];console.log(arr.toString()) // "刘,关,张"// 2. join()console.log(arr.join('-')) // "刘-关-张"
检测数组
if (Array.isArray(value)){// 操作数组}
