1. 程式人生 > 其它 >reduce對陣列及陣列物件的常見操作

reduce對陣列及陣列物件的常見操作

語法:

array.reduce(function(prev, currentValue, currentIndex, arr), initialValue)

prev: 初始值,或者是計算結束後的返回值
currentValue: 當前元素
currentIndex: 當前元素的索引
arr: 當前元素所屬的陣列物件
initialValue: 初始值

什麼時候用它?

當多個數據最終變成一個數據的時候

有道面試題,給定一個數組,讓我求它的平均數,我先用for迴圈利用每項累加,除以陣列長度來計算的

面試官讓我用其他方法解決,這時候就可以用reduce來解決

原陣列 var arr = [1, 2, 3, 6, 8]

// 陣列求和
var
sum = arr.reduce((prev, currentVal) => { return prev+ currentVal; }, 0)
// 平均數
var
average = arr.reduce((prev, currentVal) => { return (prev + currentVal) / arr.length; }, 0)
// 陣列去重
var
newArr = arr.reduce((prev, cur) => { prev.indexOf(cur) === -1 && prev.push(cur);
return prev; },[]);
// 物件陣列求和
var result = [
  { name: 'lily', age: 18 },
  { name: 'lucy', age: 20 },
  { name: 'lulu', age: 35 }
];
var sumAge = result.reduce((accumulator, cur) => {
  return accumulator + cur.age;
}, 0); 
// 求陣列最大值
var maxVal = arr.reduce((prev, cur) => {
  return prev > cur ? prev : cur;
}, 
0);

大概這些,後期再加~~