归并方法
- 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,该方法返回true
1. filter() 返回true的项组成数组后返回
1. forEach() 没有返回值
1. map() 返回由每次函数调用结果构成的数组
1. some() 有一项返回true,该方法返回true
```javascript
let 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
// filter
let 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:要插入的元素(可多个)
```javascript
const 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('赵', '孙')) // 5
console.log(arr.pop()) // "孙"
console.log(arr.shift()) // "刘"
console.log(arr.unshift('诸')) // 4
console.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)){
// 操作数组
}