个人博客 个人博客
首页
  • 前端
  • 后端
  • Git
  • Docker
  • 网络
  • 操作系统
工具
阅读
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

董先亮

前端react开发
首页
  • 前端
  • 后端
  • Git
  • Docker
  • 网络
  • 操作系统
工具
阅读
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • HTML

  • CSS

  • JavaScript

    • 防抖与节流
    • 本地存储
    • PWA
    • 地理位置
    • 对象 Object
    • 事件坐标详解
    • 常用函数
    • class类
    • Array 数组
      • 其他
      • blob下载文件
      • 深度克隆
      • 模块化
      • 常用工具函数
      • 拖拽
      • Map与Set
    • TypeScript

    • 前端基础
    • JavaScript
    NeverStop1024
    2022-08-28
    目录

    Array 数组

    # 归并方法

    • reduce() 前往后遍历
    • reduceRight() 从后往前遍历
    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
    2
    3
    4
    5
    6
    7
    8

    # 迭代方法

    1. every() 每项返回true,该方法返回true
    2. filter() 返回true的项组成数组后返回
    3. forEach() 没有返回值
    4. map() 返回由每次函数调用结果构成的数组
    5. some() 有一项返回true,该方法返回true
    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) => { 
     // 执行某些操作
    });
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22

    # 查找元素

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

    # 截取

    1. slice() 返回截取的新数组

    不改变原数组

    2. splice() 可删除、插入、替换

    改变原数组,返回删除元素

    • 删除:传2个参数,参数1:开始位置,参数2:删除个数
    • 插入:传3个参数,参数1:开始位置,参数2:0(要删除的数量),参数3:要插入的元素(可多个)
    • 替换:传3个参数,参数1:开始位置,参数2:要删除元素数量,参数3:要插入的元素(可多个)
    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] 
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18

    # 插入与移除

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

    # 排序

    借用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] 
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    # 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]
    
    1
    2
    3
    4
    5

    # 空位

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

    # 填充

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

    # 转换为字符串

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

    # 检测数组

    if (Array.isArray(value)){ 
     // 操作数组
    }
    
    1
    2
    3
    编辑 (opens new window)
    #Array
    上次更新: 2022/08/28
    class类
    其他

    ← class类 其他→

    最近更新
    01
    mock使用
    07-12
    02
    websocket即时通讯
    07-12
    03
    前端面试题
    07-09
    更多文章>
    Theme by Vdoing | Copyright © 2022-2023 NeverStop1024 | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式