iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >javascript中怎么使用reduce方法
  • 233
分享到

javascript中怎么使用reduce方法

2023-06-15 11:06:04 233人浏览 安东尼
摘要

这篇文章主要为大家展示了“javascript中怎么使用reduce方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“javascript中怎么使用reduce方法”这篇文章吧。在javascr

这篇文章主要为大家展示了“javascript中怎么使用reduce方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“javascript中怎么使用reduce方法”这篇文章吧。

在javascript中,reduce是归并方法,语法格式为“数组.reduce(function(前一个值,当前值,索引,数组对象){},初始值)”。reduce方法接收一个函数作为累加器,数组中的每个值开始缩减,最终计算为一个值。

教程操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。

与之前两篇文章( map()的实现 ,filter()的实现 )中的迭代方法不一样,reduce() 是归并方法。

reduce 接收两个参数:

第一个参数是在每一项上调用的函数

该函数接收 4 个参数:

  • 前一个值 prev

  • 当前值 cur

  • 项的索引 index

  • 数组对象 array

第二个可选参数是作为归并基础的初始值

reduce 方法返回一个最终的值。

代码表示:

arr.reduce(function(prev, cur, index, arr){}, initialValue)

归并

与之前的迭代不同,归并不是对每一项都执行目标函数,而是可以概括为如下两步:

  • 不断地对数组的前两项“取出”,对其执行目标函数,计算得到的返回值

  • 把上述返回值“填回”数组首部,作为新的 array[0]

  • 持续循环执行这个过程,直到数组中每一项都访问了一次

  • 返回最终结果

举例说明

对数组 [1,2,3] 归并执行 (prev, cur) => prev + cur,流程如图:

[1, 2, 3] // 取出 1 + 2 ,填回 3[3, 3] // 取出 3 + 3 ,填回 6[6] // 最终结果为 6

所以得到 6 。

实现

第一版

根据这个思路,得到第一版代码如下

// 第一版Array.prototype.fakeReduce = function fakeReduce(fn, base) {  // let arr = base ? this.unshift(base) : this;// 首进,返回新数组的长度,影响原数组 故不能这么写  let initialArr = this;  let arr = initialArr.concat(); //得到副本  if (base) arr.unshift(base); // 当存在归并基础值的参数时,将其从数组首部推入  let index;  while (arr.length > 2) {    index = initialArr.length - arr.length + 1;    let newValue = fn.call(null, arr[0], arr[1], index, initialArr);    arr.splice(0, 2); // 删除前两项,影响原数组    arr.unshift(newValue);// 把 fn(arr[0],arr[1]) 的结果从数组首部推入  }  index += 1;  let result = fn.call(null, arr[0], arr[1], index, initialArr);  return result;};

注意点:

队列方法 unshift()

可以从数组首部加入任意个项,返回值是新数组的长度,影响原数组

splice() 方法,高程三将其誉为最强大的数组方法

删除任意数量的项

指定 2 个参数: (删除起始位置, 删除项个数)

插入任意数量的项

指定 3 个参数: (起始位置,0,要插入的项)

第二个参数 0 即为要删除的个数

替换,即删除任意数量的项的同时,插入任意数量的项

指定 3 个参数:(起始位置,要删除的个数, 要插入的任意数量的项)

返回值始终是一个数组,包含从原始数组中删除的项。若未删除任何项,返回空数组,影响原数组

改进版

从上面的总结可以看出,splice() 方法完全可以取代 unshift() 方法。

而且,第一版中存在一些重复代码,也可以改进。

由此得到第二版代码

// 第二版Array.prototype.fakeReduce = function fakeReduce(fn, base) {  let initialArr = this;  let arr = initialArr.concat();  if (base) arr.unshift(base);  let index, newValue;  while (arr.length > 1) {    index = initialArr.length - arr.length + 1;    newValue = fn.call(null, arr[0], arr[1], index, initialArr);    arr.splice(0, 2, newValue); // 直接用 splice 实现替换  }  return newValue;};

检测:

let arr = [1, 2, 3, 4, 5];let sum = arr.fakeReduce((prev, cur, index, arr) => {  console.log(prev, cur, index, arr);  return prev * cur;}, 100);console.log(sum);

输出:

100 1 0 [ 1, 2, 3, 4, 5 ] 100 2 1 [ 1, 2, 3, 4, 5 ] 200 3 2 [ 1, 2, 3, 4, 5 ] 600 4 3 [ 1, 2, 3, 4, 5 ] 2400 5 4 [ 1, 2, 3, 4, 5 ] 12000

最后加上类型检测等

// 第三版Array.prototype.fakeReduce = function fakeReduce(fn, base) {  if (typeof fn !== "function") {    throw new TypeError("arguments[0] is not a function");  }  let initialArr = this;  let arr = initialArr.concat();  if (base) arr.unshift(base);  let index, newValue;  while (arr.length > 1) {    index = initialArr.length - arr.length + 1;    newValue = fn.call(null, arr[0], arr[1], index, initialArr);    arr.splice(0, 2, newValue); // 直接用 splice 实现替换  }  return newValue;};

以上是“javascript中怎么使用reduce方法”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: javascript中怎么使用reduce方法

本文链接: https://www.lsjlt.com/news/279902.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • javascript中怎么使用reduce方法
    这篇文章主要为大家展示了“javascript中怎么使用reduce方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“javascript中怎么使用reduce方法”这篇文章吧。在javascr...
    99+
    2023-06-15
  • JavaScript中reduce()方法怎么用
    这篇文章主要讲解了“JavaScript中reduce()方法怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript中reduce()方法怎么用”吧!一、语法arr.red...
    99+
    2023-06-30
  • JavaScript中reduce()方法如何使用
    本篇文章为大家展示了JavaScript中reduce()方法如何使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。reduce()方法对数组中的每一个元素执行一个...
    99+
    2024-04-02
  • JavaScript数组reduce()方法怎么使用
    这篇文章主要介绍了JavaScript数组reduce()方法怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaScript数组reduce()方法怎么使用文章都会...
    99+
    2024-04-02
  • 如何使用javascript中reduce()方法
    这篇文章主要讲解了“如何使用javascript中reduce()方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用javascript中reduc...
    99+
    2024-04-02
  • JavaScript中reduce()详解及使用方法
    目录reduce():总结:reduce 应用场景:1.数组里所有值的和2.累加数组中对象的值3.将二维数组转为一维数组4.计算数组中每个元素出现的次数5.按属性对object分类6...
    99+
    2023-05-18
    js中reduce详解 js中reduce的用法 js reduce
  • 怎么使用javascript数组求和中的reduce()方法
    这篇文章将为大家详细讲解有关怎么使用javascript数组求和中的reduce()方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。JavaScript有什么特点1、js属于一种解释性脚本语言;2、在绝...
    99+
    2023-06-14
  • javascript数组中reduce方法和pop方法怎么用
    这篇文章给大家分享的是有关javascript数组中reduce方法和pop方法怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、reduce方法1直接vs打开2代码部分var geyao=[1,...
    99+
    2023-06-29
  • JavaScript中reduce()和reduceRight()方法怎么用
    这篇文章主要为大家展示了“JavaScript中reduce()和reduceRight()方法怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“J...
    99+
    2024-04-02
  • JavaScript中的reduce()怎么使用
    本篇内容介绍了“JavaScript中的reduce()怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所...
    99+
    2024-04-02
  • Reduce怎么在JavaScript中使用
    本篇文章给大家分享的是有关Reduce怎么在JavaScript中使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。JavaScript的特点1.JavaScript主要用来向...
    99+
    2023-06-07
  • Javascript数组方法reduce怎么用
    这篇文章主要为大家展示了“Javascript数组方法reduce怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Javascript数组方法reduce怎...
    99+
    2024-04-02
  • JavaScript数组reduce()方法怎么用
    本篇内容主要讲解“JavaScript数组reduce()方法怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript数组reduce()方法怎么用”吧!将某个值减去数组中的每个...
    99+
    2023-06-26
  • JavaScript中数组reduce()方法使用详情
    语法: reduce()对数组中的每个元素进行累加,返回一个新的值,可以传入初始值简单的讲就是返回数组中所有元素的和数  不会改变原始组的值  不会对空数组执行回...
    99+
    2024-04-02
  • JavaScript中如何使用 .map()、.reduce() 和 .filter()方法
    这篇文章主要为大家展示了“JavaScript中如何使用 .map()、.reduce() 和 .filter()方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScript中如何使用...
    99+
    2023-06-02
  • JavaScript数组reduce方法如何使用
    今天小编给大家分享一下JavaScript数组reduce方法如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。redu...
    99+
    2023-07-05
  • JAVA8 Stream流中的reduce()方法怎么使用
    这篇文章主要介绍“JAVA8 Stream流中的reduce()方法怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JAVA8 Stream流中的reduce()方法怎么使...
    99+
    2023-07-05
  • javascript数组includes、reduce的基本使用方法
    这篇文章主要讲解了“javascript数组includes、reduce的基本使用方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript数组includes、reduce的...
    99+
    2023-06-20
  • Javascript中怎么使用ES6的map和reduce
    本文小编为大家详细介绍“Javascript中怎么使用ES6的map和reduce”,内容详细,步骤清晰,细节处理妥当,希望这篇“Javascript中怎么使用ES6的map和reduce”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入...
    99+
    2023-06-29
  • JavaScript中如何使用reduce实现数组map方法
    这篇文章主要介绍了JavaScript中如何使用reduce实现数组map方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作