reduce语法
这里粘下 reduce 的基本语法
/**
* total 必需。初始值, 或者计算结束后的返回值
* currentValue 必需。当前元素
* currentIndex 可选。当前元素的索引
* arr 可选。当前元素所属的数组对象
* initialValue 可选。传递给函数的初始值
**/
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
array 经过 reduce处理后,可以返回各种数据类型,这里列举几个想到的
reduce 返回 数值
const array = [1,2,3,4,5,6,7,8]
const result = array.reduce((a,b) => {
a += b
return a
},0)
// 这里result 返回数值 36
reduce 返回 字符串
const array = [1,2,3,4,5,6,7,8]
const result = array.reduce((a,b) => {
a = `${a}${b}`
return a
},'')
// 这里result 返回字符串 12345678
reduce 返回 对象
const array = [
{key: 'name', value: 'wsf'},
{key: 'age', value: '18'},
{key: 'sex',value: 'man'}
]
const result = array.reduce((a,b) => {
a[b.key] = b.value
return a
},{})
// 这里result 返回对象 {age: "18",name: "wsf",sex: "man"}
reduce 返回 数组
const array = [
{key: 'name', value: 'wsf'},
{key: 'age', value: '18'},
{key: 'sex',value: 'man'}
]
const result = array.reduce((a,b) => {
a.push(b.key)
return a
},[])
// 这里result 返回对象 ["name", "age", "sex"]
最后,比较下 reduce 和 forEach
reduce 和 forEach 本质上,都是对数据进行遍历,但reduce可以拿到 上个循环的值,forEach则接近于同时遍历。