数组的reduce()和from()详解

  1. reduce()
    可以作为一个高阶函数,用于函数的计算,对于空数组是不会执行回调函数的
    语法:array.reduce( ( prev, cur, index, arr ) => {}, init )

    arr 表示原数组;
    prev 表示上一次调用回调时的返回值,或者初始值 init;
    cur 表示当前正在处理的数组元素;
    index 表示当前正在处理的数组元素的索引,若提供 init 值,则索引为0,否则索引为1
    init 表示初始值,当提供值时,第一个prev是提供的值;当不提供值时,第一个prev是原数组的第一个元素

    必须的参数只有两个:prev 和 cur

    数组求和
    var  arr = [1, 2, 3, 4];
    var sum = arr.reduce((x,y)=> x+y)
    console.log(sum) // 10
    将二维数组转为一维数组 let arr = [[0, 1], [2, 3], [4, 5]] let newArr = arr.reduce((pre,cur)=>{ return pre.concat(cur) },[]) console.log(newArr); // [0, 1, 2, 3, 4, 5] 将多维数组转化为一维数组 let arr = [[0, 1], [2, 3], [4,[5,6,7]]] const newArr = function(arr){ return arr.reduce((pre,cur)=>pre.concat(Array.isArray(cur)? newArr(cur) : cur),[]) } console.log(newArr(arr)); //[0, 1, 2, 3, 4, 5, 6, 7] 对象数组每一项的某个相同属性求和 var result = [ { a: 'a', b: 10 }, { a: 'b', b: 20 }, { a: 'c', b: 30 } ]; var sum = result.reduce(function(prev, cur) { return cur.b + prev; }, 0); console.log(sum) //60

     

  2. Array.from()
    用于从一个类数组或可迭代对象中创建一个新的、浅拷贝的数组实例
    语法:Array.from(object, mapFunction, thisValue)

    object:必需,要转换为数组的对象
    mapFunction:可选,数组中每个元素要调用的函数
    thisValue:可选,映射函数(mapFunction)中的 this 对象

    Array.from(new Array(3), (item, index) => { return index })
    返回:[0, 1, 2]

    拓展:array.from()方法- JavaScript | MDN

posted @ 2020-09-24 14:53  _JZYU  阅读(293)  评论(0编辑  收藏  举报