1
【ES6入门】

reduce

回调函数参数四个:pre: 初始值(之后为上一操作的结果);cur: 当前元素之;index: 当前索引;arr: 数组本身

主要有以下几种用法:

    // reduce 数组去重,也可使用Set实现
    // 1)reduce 方式
    let arr = [1, 2, 1, 2, 3, 5, 4, 5, 3, 4, 4, 4, 4]
    let result = arr.sort().reduce((init, current) => {
        if (init.length === 0 || init[init.length - 1] !== current) {
            init.push(current)
        }
        return init
    }, [])
    // 2)Set
    const dedupe = (array) => {
      return Array.from(new Set(array));
    }
    console.log(Array.from(new Set([1,2,3,4,5,2,4,1])))
    console.log(...new Set([1,2,3,4,5,2,4,1]))
    
    // 数组求和
    var total = [ 0, 1, 2, 3 ].reduce(( acc, cur ) => {
        return acc + cur
    }, 0)
    
    // 二维数组转为一维数组
    [[1, 2], [3, 4], [5, 6]].reduce(( acc, cur ) => [...acc, ...cur], []) // [1, 2, 3, 4, 5, 6]
    [[1, 2], [3, 4], [5, 6]].reduce(( acc, cur ) => {
      return acc.concat(cur)
    }, []) // [ 0, 1, 3, 4, 5, 6 ]
    
    // 计算数组中每个元素出现的次数
    const arraySum = (arr, val) => arr.reduce((acc, cur) =>         {return cur == val ? acc + 1 : acc + 0}, 0)
    let arr = [1, 2, 3, 4, 5]
    arraySum(arr, 0) // 3
    
    // 代替filter和map的组合
    const characters = [
        { name: 'ironman', env: 'marvel' },
        { name: 'black_widow', env: 'marvel' },
        { name: 'wonder_woman', env: 'dc_comics' },
    ]
    
    // filter 和 map 的组合
    characters
    .filter(character => character.env === 'marvel')
    .map(character => {
        return Object.assign(
                {},
                character,
                { alsoSeenIn: ['Avengers'] }
            )
    })
    
    // reduce 方式
    characters.reduce((acc, character) => {
        return character.env === 'marvel' ? 
            acc.concat(
                Object.assign(
                    {},
                    character,
                    { alsoSeenIn: ['Avengers'] }
                )
            ) : acc
    }, [])

forEach

回调函数参数,item(数组元素)、index(序列)、arr(数组本身)
循环数组,无返回值,不改变原数组
不支持return操作输出,return只用于控制循环是否跳出当前循环

includes

判断数组是否包含某个元素,不用return,不用回调函数,返回布尔值

filter

使用return操作输出,会循环数组每一项,并在回调函数中操作
返回满足条件的元素组成的数组,不改变原数组

map

输出的是return什么就输出什么新数组
原数组被“映射”成对应新数组,返回新数组,不改变原数组

find

数组实例的find方法,用于找出第一个符合条件的数组成员。它的参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该成员。如果没有符合条件的成员,则返回undefined

[1, 4, -5, 10].find((n) => n < 0) // -5

some

返回布尔值,遇到满足条件变跳出循环

every

返回布尔值,遇到不满足条件跳出循环


toutouping
190 声望12 粉丝

每天进步一点点,遇见更好的自己