通过实例吃透 javascript 中 reduce

通过实例吃透 javascript 中 reducereduce 是 JavaScript 中数组的一个高阶函数,它可以用于在数组上执行一个归并操作(这里 reduce 的意思就是归并)。开发中常用而且很好用,但是理解并没有那么简单。尤其对迭代器不熟悉的同学。以下将一步步的通过例子,来吃透

大家好,欢迎来到IT知识分享网。

reduce JavaScript 中数组的一个高阶函数,它可以用于在数组上执行一个归并操作(这里 reduce 的意思就是归并)。开发中常用而且很好用,但是理解并没有那么简单。尤其对迭代器不熟悉的同学。以下将一步步的通过例子,来吃透 reduce 的使用。

通过实例吃透 javascript 中 reduce

语法如下:

array.reduce(function(accumulator, currentValue, currentIndex, array) { // ... }, initialValue);

accumulator 是上一次计算后的结果

currentValue 是当前元素的值

currentIndex 是当前元素的索引

array 是原始数组

initialValue 是一个可选的初始值。

初始值的作用是为了初始化 accumulator。如果省略了初始值,那么 reduce() 第一次调用传入的 accumulator 将是数组的第一个元素,currentValue 将是数组的第二个元素。

通过实例吃透 javascript 中 reduce

摸透参数

先通过例子来演示:

var nums=[1,2,3,4,5,6]; var newNym=nums.reduce((accumulator,currentValue,currentIndex,array)=>{ console.log("acc="+accumulator); console.log("curr="+currentValue); console.log("currentIndex="+currentIndex); console.log(array) },0);

结果是:

通过实例吃透 javascript 中 reduce

initialValue设置了初始值为 0, accumulator 第一次为0.

如果不设置 initialValue

代码修改为这样:

var nums=[1,2,3,4,5,6]; var newNym=nums.reduce((accumulator,currentValue,currentIndex,array)=>{ console.log("acc="+accumulator); console.log("curr="+currentValue); //console.log("currentIndex="+currentIndex); // console.log(array) });
通过实例吃透 javascript 中 reduce

acc 的初始值为第一个元素值。

将数组修改为 var nums=[8,2,3,4,5,6]; 效果会更明显。

通过实例吃透 javascript 中 reduce

不设置初始值

通过实例吃透 javascript 中 reduce

应用示例

做累加

通过实例吃透 javascript 中 reduce

initialValue 设置为数组,迭代accumulator 是数组。

数组转换

通过实例吃透 javascript 中 reduce

通过实例吃透 javascript 中 reduce

如果没有 return accumulator,第一项是数组,后续就 undefined

通过实例吃透 javascript 中 reduce

对象转换

现在设置为 对象。

var nums=[8,2,3,4,5,6]; var leter=["a","b","c","d","e","f"]; var arr=[]; var newNym=nums.reduce((accumulator,currentValue,currentIndex,array)=>{ console.log("acc="+typeof(accumulator)+"类型是数组"+Array.isArray(accumulator)); console.log("curr="+currentValue); //console.log("currentIndex="+currentIndex); //console.log(array) accumulator={ letter: leter[currentIndex], index:nums[currentIndex] }; arr.push(accumulator); return arr; },{}); console.log(newNym)

结果:

通过实例吃透 javascript 中 reduce

再来一个例子

const fruits = ['apple', 'banana', 'apple', 'orange', 'banana']; const fruitCount = fruits.reduce((accumulator, currentValue) => { if (accumulator[currentValue]) { accumulator[currentValue]++; } else { accumulator[currentValue] = 1; } return accumulator; }, {}); console.log(fruitCount); // 输出 {apple: 2, banana: 2, orange: 1}

initialValue 这个参数可以省略,但实际使用中,意义很大。

在来一个例子,结束这个学习之旅:

const words = ['I', 'love', 'programming']; const sentence = words.reduce((accumulator, currentValue, currentIndex, array) => { if (currentIndex === array.length - 1) { return accumulator + currentValue + '.'; } else { return accumulator + currentValue + ' '; } }, ''); console.log(sentence); // 输出 "I love programming."
通过实例吃透 javascript 中 reduce

主要应用场景

reduce() 方法的主要应用场景包括:

  • 对数组进行求和、求平均数、求最大值、求最小值等归约操作。
  • 将数组中的各个元素转换成另一种类型的值,例如将数组中的字符串进行拼接。
  • 对数组进行分组、去重、排除等操作,例如统计数组中每个元素出现的次数。
  • 在函数式编程中,reduce() 方法经常用于实现柯里化(currying)、偏函数(partial function)等功能。

需要注意的是,reduce() 方法通常比普通循环代码更简洁、可读性更强,但也可能不太容易理解,因此在使用时要根据实际情况进行权衡。此外,由于 reduce() 方法是一个高阶函数,因此如果数组较大的话,使用 reduce() 方法可能会带来一定的性能开销。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/89759.html

(0)
上一篇 2024-10-18 17:26
下一篇 2024-10-18 19:45

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信