作用:reduce方法es6新增方法,通常被作用域累加器,但其實reduce其實不至于此
語法:
Array.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
陣列.reduce(function(累加器,遍歷元素,[索引[, 參與回圈的陣列]])[, 起始要參與運算的引數])
引數:
callback:執行陣列中每個值 (如果沒有提供 initialValue則第一個值除外)的函式,包含四個引數:
-----accumulator:累計器累計回呼的回傳值; 它是上一次呼叫回呼時回傳的累積值,或initialValue(見于下方),
-----currentValue:陣列中正在處理的元素,
-----index:可選 陣列中正在處理的當前元素的索引, 如果提供了initialValue,則起始索引號為0,否則從索引1起始,
-----array:可選 呼叫reduce()的陣列
initialValue: 可選 作為第一次呼叫 callback函式時的第一個引數的值, 如果沒有提供初始值,則將使用陣列中的第一個元素, 在沒有初始值的空陣列上呼叫 reduce 將報錯,(第一次回圈的值).
1.當累加器使用
//陣列.reduce(函式體(積累的回傳值, 正在處理的元素[, 索引[,正在處理的陣列]])[, 回圈開始的起始值])
let a = [1, 2, 3, 4, 5]
let b = a.reduce(function(accumulator,currentValue,index,array){
console.log(index);// 索引號
console.log(array);// [1, 2, 3, 4, 5]
return accumulator+=currentValue
},5)//敲黑板這個0 是開始那個和索引為1相加 默認不給就是1+2+3+4+5 給5就是5+1+2+3+4+5 給6就是6+1+2+3+4+5
console.log(a);//a: [1, 2, 3, 4, 5]
console.log(b);//b: 20
2.計算一個資料里重復的元素次數
let arr = ["a", "b", "c", "b", "z", "a", "c", "b", "d", "c", "x", "b", "z", "c", "z", "x", "c", "b", "a"]
const obj = arr.reduce((sum,item)=>{
sum[item] ? sum[item]++ : sum[item] = 1
return sum
},{})
console.log(obj);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/321287.html
標籤:其他
下一篇:webpack介紹及使用
