- 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 - Array.from()
用于从一个类数组或可迭代对象中创建一个新的、浅拷贝的数组实例
语法:Array.from(object, mapFunction, thisValue)
object:必需,要转换为数组的对象
mapFunction:可选,数组中每个元素要调用的函数
thisValue:可选,映射函数(mapFunction)中的 this 对象
Array.from(new Array(3), (item, index) => { return index }) 返回:[0, 1, 2]