语法:array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
total 必需。初始值, 或者计算结束后的返回值。
currentValue 必需。当前元素
currentIndex 可选。当前元素的索引
arr 可选。当前元素所属的数组对象。
initialValue 可选。传递给函数的初始值
题目1:
["b", "c","b", "c","a", "b", "c"] 统计每个元素出现的次数,结果是: {a:1,b: 3, c: 3}
reduce()方法
const arr = ["b", "c","b", "c","a", "b", "c"]
const obj= arr.reduce((acc,cur)=>{
acc[cur]?acc[cur]++:acc[cur]=1
return acc
},{})
console.log(obj) // ==> {a:1, b: 3, c: 3}
霸道写法:
const arr = ["b", "c","b", "c","a", "b", "c"]
// 转换成一行
const obj=arr.reduce((sum,item)=>(sum[item]?sum[item]++:(sum[item]=1),sum),{})
console.log(obj) // ==> {a:1, b: 3, c: 3}
题目二:
const arr = [{ label: '男', value: 1 }, { label: '女', value: 0 }]
reduce()方法
const arr = [{ label: '男', value: 1 }, { label: '女', value: 0 }]
const obj= arr.reduce((cur,item)=>{
cur[item.label]=item.value
return cur
},{})
console.log(obj) // {男: 1, 女: 0}
霸道写法:
const arr = [{ label: '男', value: 1 }, { label: '女', value: 0 }]
const obj= arr.reduce((cur,item)=>(cur[item.label]=item.value,cur),{})
console.log(obj) // {'1': '男', '0': '女'}