归并方法

  • 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

  1. <a name="UISqx"></a>
  2. #### 迭代方法
  3. 1. every() 每项返回true,该方法返回true
  4. 1. filter() 返回true的项组成数组后返回
  5. 1. forEach() 没有返回值
  6. 1. map() 返回由每次函数调用结果构成的数组
  7. 1. some() 有一项返回true,该方法返回true
  8. ```javascript
  9. let numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];
  10. // every()
  11. let everyResult = numbers.every((item, index, array) => item > 2);
  12. console.log(everyResult); // false
  13. // some()
  14. let someResult = numbers.some((item, index, array) => item > 2);
  15. console.log(someResult); // true
  16. // filter
  17. let filterResult = numbers.filter((item, index, array) => item > 2);
  18. console.log(filterResult); // [3, 4, 5, 4, 3]
  19. // map()
  20. let mapResult = numbers.map((item, index, array) => item * 2);
  21. console.log(mapResult); // [2, 4, 6, 8, 10, 8, 6, 4, 2]
  22. // forEach()
  23. numbers.forEach((item, index, array) => {
  24. // 执行某些操作
  25. });

查找元素

  1. indexOf()
    • 前向后查找,返回查找元素位置,没找到返回-1
  2. lastIndexOf()
    • 后向前查找,返回查找元素位置,没找到返回-1
  3. includes()
    • 返回布尔值
  4. find()
    • 接收两个参数,匹配到第一个结果后停止执行
    • 参数(两个)
      • 参数1:断言函数。断言函数接收3个参数:元素、索引、数组本身,找到一个就不再继续查找
      • 参数2(可选): 指定断言函数内部this
    • 返回值:
      • 匹配到的第一个元素
  5. 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

  1. <a name="FNFNR"></a>
  2. #### 截取
  3. **1. slice() 返回截取的新数组**
  4. > 不改变原数组
  5. **2. splice() 可删除、插入、替换**
  6. > 改变原数组,返回删除元素
  7. - 删除:传2个参数,参数1:开始位置,参数2:删除个数
  8. - 插入:传3个参数,参数1:开始位置,参数2:0(要删除的数量),参数3:要插入的元素(可多个)
  9. - 替换:传3个参数,参数1:开始位置,参数2:要删除元素数量,参数3:要插入的元素(可多个)
  10. ```javascript
  11. const arr = [1,2,3,4,5]
  12. // 1. slice(开始,结束) 不包含结束位置
  13. //slice创建一个新数组,不影响原数组
  14. console.log(arr.slice(1,3)) // [2, 3]
  15. // 2. splice()
  16. const arr = [1,2,3,4,5]
  17. // 删除
  18. console.log(arr.splice(1,3)) // [2, 3, 4]
  19. console.log(arr) // [1, 5]
  20. // 插入
  21. console.log(arr.splice(1, 0, 'liu', 'guan')) // []
  22. console.log(arr) // [1, 5] // [1, "liu", "guan", 5]
  23. // 替换
  24. console.log(arr.splice(1, 2, 2, 3)) // ["liu", "guan"]
  25. console.log(arr) // [1, 2, 3, 5]

插入与移除

  1. push() 添加到末尾,返回数组最新长度,可一次添加多个
  2. unshift() 添加到开头,返回数组最新长度,可一次添加多个
  3. pop() 删除最后一项,返回被删除值
  4. shift() 删除第一项
  1. const arr = ['刘', '关', '张'];
  2. console.log(arr.push('赵', '孙')) // 5
  3. console.log(arr.pop()) // "孙"
  4. console.log(arr.shift()) // "刘"
  5. console.log(arr.unshift('诸')) // 4
  6. console.log(arr) // ["诸", "关", "张", "赵"]

排序

借用sort()实现排序

  1. function compare(value1, value2) {
  2. if (value1 < value2) {
  3. return 1;
  4. } else if (value1 > value2) {
  5. return -1;
  6. } else {
  7. return 0;
  8. }
  9. }
  10. let values = [4, 1, 19, 10, 15];
  11. values.sort(compare);
  12. console.log(values); // [19, 15, 10, 4, 1]

from()、of()

  1. // 1. from() 将类数组转换为数组,字符串、Arguments对象、Map、Set等
  2. console.log(Array.from("Matt")); // ["M", "a", "t", "t"]
  3. // 2. of() 将一组参数转换为数组
  4. console.log(Array.of(1, 2, 3, 4)); // [1, 2, 3, 4]

空位

  1. // 空位
  2. console.log(Array.from({length:3})) // [undefined, undefined, undefined]

填充

  1. // fill(填充内容, 开始索引, 结束索引(不包含))
  2. console.log(Array.from({length:3}).fill('张飞',1,2)) // [undefined, 张飞, undefined]

转换为字符串

  1. // 1. toString()
  2. const arr = ['刘', '关', '张'];
  3. console.log(arr.toString()) // "刘,关,张"
  4. // 2. join()
  5. console.log(arr.join('-')) // "刘-关-张"

检测数组

  1. if (Array.isArray(value)){
  2. // 操作数组
  3. }