[想试试看JavaScript ] 阵列一些操作阵列好用的方法 reduce

reduce()

reduce 很常用在计算累加上面。

之前介绍的方法,大多都是将阵列的值一个一个放进 callback 函式做计算,接着回传新阵列

reduce 则是将每次放进 callback 函式计算完的值,再一次一次放进 callback 函式计算,最後再回传一个值出来。

reduce 可以将原阵列的元素,由左至右,从第一个到最後一个,一个一个传进 callback 函式做计算,同时也将每一次计算完的值,一次一次地传进 callback 函式

简单范例:

var a=[1,2,3,4,5,6,7,8];
var b=a.reduce(function(sum,e){
	return sum+e;
})
console.log(a); // [1,2,3,4,5,6,7,8]
console.log(b); // 36 (1+2+3+4+5+6+7+8)

参数 sum 就是上一次计算完的结果

可以印出来看看

var a=[1,2,3,4,5,6,7,8];
var b=a.reduce(function(sum,e){
	console.log(sum); // 印出 1,3,6,10,15,21,28,36
	return sum+e;
})
console.log(a); // [1,2,3,4,5,6,7,8]
console.log(b); // 36 (1+2+3+4+5+6+7+8)

会印出

1

3 (1+2)

6 (3+3)

10 (6+4)

15 (10+5)

21 (15+6)

28 (21+7)

36 (28+8)

语法:

reduce 会将元素以及 callback 函式运算的结果,一次一次传进 callback 函式做计算

calback 函式有四种参数

  1. accumulator,累加器,累加器上一次呼叫後,所回传的累加数值
  2. currentValue,阵列中正在处理的元素,也就是正被传进 callback 函式的元素
  3. currentIndex(选填),原阵列正被处理的元素的索引,如果有传入
  4. array(选填),

另外 callback 函式後面还可以放一个参数

  1. initialValue(选填),累加器的初始值
Array.reduce(function callback(accumulator,currentValue,currentIndex,array){
  //	return 
},initailValue)

<<:  [Day24] - 介绍 Svelte.js 如何使用

>>:  [Day13] [笔记]React Hooks-UseReducer

[Day29]Flutter Netflix UI 底部导航栏上的通知数量

大家好,上一篇我们成功在Android手机上接到通知,今天我们在底部导航栏上显示通知 先设置一个变数...

Leetcode: 98. Validate Binary Search Tree

确认树是不是从任意中间节点切开时,左子树值皆小於中间节点,右子树皆大於中间节点。 程序码 class...

自动化测试,让你上班拥有一杯咖啡的时间 | Day 30 - 学习cypress intercept 与後记

此系列文章会同步发文到个人部落格,有兴趣的读者可以前往观看喔。 终於来到铁人赛第30天!谢谢观看我...

[Vue2] 从初学到放弃 Day5-生命周期Hooks

Instance Lifecycle Hooks Hooks到底是什麽? 中文解释就是钩子,其实Vu...

Day.13 「初步学习 Javascript 基础篇」 —— Javascript 宣告变数 与 基本型别

前面已经大略介绍了 HTML 和 CSS 的入门知识了,接着我们要来认识 Javascript,来...