JS reduce() 方法扩展
const dealArr = arr.reduce((prev,cur,index,arr)=>{
},init)
- prev:表示上一次调用回调时的返回值,第一次则为初始值
- cur:当前处理的数组对象
- index:index
- arr:处理的原数组
- init:初始值
reduce 的四种高级用法
判断一个字符出现次数0
// 判断一个字符出现次数0
reduceOne () {
var str = ['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']
var arr = str.reduce((value, item) => {
value[item] ? value[item]++ : (value[item] = 1)
return value
}, {})
console.log(arr, 'result') //打印结果 {a:3,b:3,c:3}
},
数组数据去重
// 数组数据去重
reduceTwo () {
let arr = [1, 2, 3, 4, 4, 1]
let newArr = arr.reduce((pre, cur) => {
if (pre.includes(cur)) {
return pre
} else {
return pre.concat(cur)
}
}, [])
console.log(newArr) // [1, 2, 3, 4]
},
多维数组转化成一维数组
// 多维数组转化成一维数组
reduceThree () {
var result = arr.reduce((prev, cur) => {
return prev.concat(Array.isArray(cur) ? this.reduceThree(cur) : cur)
}, [])
return result
},
计算数组对象中某个属性的总和
// 计算数组对象中某个属性的总和
reduceFour () {
var result = [
{
subject: 'math',
score: 10
},
{
subject: 'chinese',
score: 20
},
{
subject: 'english',
score: 30
}
]
var sum = result.reduce(function (prev, cur) {
return cur.score + prev
}, 0)
console.log(sum)
}