标签: 数组

  • 数组方法(二)

    arr.includes()

    用来判断一个数组是否包含一个指定的值

    语法

    arr.includes(item)

    arr.concat()

    用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。

    语法

    arr.concat(arr1,arr2)

    Array.from(arr)

    可将伪数组转换为数组

    语法

    Array.from(arr[, mapFn[, thisArg]])

    arr 想要转换成数组的伪数组对象或可迭代对象。

    mapFn如果指定了该参数,新数组中的每个元素会执行该回调函数。

    let arr = [1, 2, 3, 4, 5]
    //把数组里的值都*100
    let newArr = Array.from(arr, (i) => i * 100)
    
    //去重 利用Set构造函数
    let arr1 = [1,1,2,2,3,4,5,6,6,7,7]
    let newArr1 = Array.from(new Set(arr1))
    // [1, 2, 3, 4, 5, 6, 7]
    

    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/from

    arr.reduce()

    语法

    arr.reduce(callback,[initialValue])

    callback 回调函数(包含四个参数)

    1. previousValue (上一次调用回调返回的值,或者是提供的初始值initialValue
    2. currentValue (数组中当前被处理的元素)
    3. index (当前元素在数组中的索引)
    4. array (调用 reduce 的数组)

    initialValue

    可选

    如果没有提供,reduce 会从索引1的地方开始执行 callback 方法,跳过第一个索引。如果提供,则从索引0开始。

    let arr = [1, 2, 3, 4, 5]
    //计算所有元素和
    arr.reduce( (prev, now) => previous + now ) // === 15
    //自己指定初始值initialValue 
    arr.reduce( (prev, now) => previous + now , 100) // === 115
    

    https://blog.csdn.net/qq_43340606/article/details/120765502

    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

  • 数组方法

    ES5新增

    对象调用的方法作用返回值
    array.forEach(function(value, index, array){})遍历
    array.map(function(value, index, array){})遍历&返回新数组
    array.filter(function(value, index, array){ return 条件 })过滤&返回新数组
    array.every(function(value, index, array){ return 条件})遍历&判断布尔值
    array.some(function(value, index, array){return 条件})遍历&判断布尔值

    forEach() 遍历

    item是形参,如果是简单类型的形参的修改, 不会影响到原来值

    let arr = [5, 6, 7, 8];
    arr.forEach(function(item){
       item = item + 1;
    })
    //arr没有变化
    
    let arr2 = [
        { name: 'zs', age: 18 },
        { name: 'zs', age: 20 },
    ]
    arr2.forEach(function(item) {
        item.age = item.age + 1
    })
    //{ name: 'zs', age: 19 },
    //{ name: 'zs', age: 21 },
    
    这是以下几个方法共享的数据
    let arr = [
      { name: 'zs', score: 100 },
      { name: 'ls', score: 99 },
      { name: 'li', score: 59 }
    ]
    

    map() 遍历 + 返回

    例:只保留名字,利用map()方法返回新数组来做

    let onlyNameArr = arr.map( item => item.name )
    //onlyNameArr === ['zs','ls','li']
    //如果想原数组只保留name,直接赋值即可arr = arr.map(...)
    //箭头函数只有一个参数,并需要被return时,不需要加return和花括号(自动加了)
    

    filter() 遍历 + 返回

    例:只保留60分以上的同学(包含的信息全都要),利用filter()过滤并返回新数组

    let MoreThan60 = arr.filter( item => item.score >= 60 )
    //需要加return条件,会把符合条件的item加到新数组
    //(并不是只加item.score,这只是用于判断)
    

    every() 遍历 + 判断

    例:比如需要判断所有学生分数是否都高于90

    let isMoreThan90 = arr.every( item => item.score >=90 )
    //isMoreThan90 === false
    

    some() 遍历 + 判断

    只要数组中有一个判断正确,则返回true

    ES6新增

    对象调用的方法作用返回值
    array.find(function(item, index) { return 条件 })遍历 / 查找找到的项 / undefined
    array.findIndex(function(item, index) { return 条件 })遍历 / 查找下标 / -1
    注意

    find() 找第一个符合条件的项, 没找到会返回 undefined,找所有符合条件的还是使用filter()方法

    findIndex() 找第一个符合条件项的下标, 没找到会返回 -1

    复习数组基本的方法

    增加

    push() 增加到最后一个

    shift() 增加到第一个

    splice() 传三个参数( 从哪开始删 , 删几个 , 要添加到数组的元素 )

    第一个参数如果是负数,则为倒数第几个(从-1开始算,不是0,等价于arr.length – n)

    要添加到数组的元素可以有多个item1, item2, 

    删除

    pop() 删除最后一个

    unshift() 删除第一个

    splice() 根据索引指定删除某一个

  • 数组

    增加

    数组.push(元素1,…,元素n)

    数组.push(元素1,...,元素n)    //将元素添加在数组的末尾 返回该数组的新长度!!!!!!
    
    let arr = [1,2,3]
    console.log(arr.length)   // 结果为3
    console.log(arr.push(4,5,6))   // 结果为6
    console.log(arr)    // 结果为 [1,2,3,4,5,6]
    

    数组.unshift(元素1,…,元素n)

    数组.unshift(元素1,...,元素n)    //将元素添加在数组的开头返回该数组的新长度!!!!!!
    
    let arr = [1,2,3]
    console.log(arr.length)            // 结果为3
    console.log(arr.unshift(4,5,6))   // 结果为6
    console.log(arr)                 // 结果为 [4,5,6,1,2,3]
    

    删除

    • 删除第一个arr.shift() //并返回该元素的值
    • 删除最后一个arr.pop() //并返回该元素的值
    • 从某一位置开始删除arr.splice ( 索引号 , 删几个 ) // 如果不写删几个 则从起始位置删到最后
    // let arr = ['red', 'green', 'blue']
    // 删除最后一个元素
    // arr.pop()
    
    //删除第一个元素
    // console.log(arr.shift())
    // shift是删除     unshift比shift 加了一个 un 表示加
    
    // 重点删除
    //arr.splice(从哪里开始删 , 删几个)
    let arr = ['red', 'green', 'blue']
    // 我就想把green 删掉
    // 第一个1 是从索引号是1的位置开始删
    // 第二1 是删除几个
    // arr.splice(1, 1)
    // arr.splice(1)