JavaScript中Reduce10个常用场景技巧

JavaScript中reduce是一个非常有用的数组方法,它可以对一个数组的所有元素进行迭代,并返回一个最终的结果。reduce方法有很多应用场景,下面将介绍十个常用场景技巧。

1. 数组求和

使用reduce方法可以很方便地对数组中的数值进行求和。只需将reduce方法的初始值设置为0,每次迭代时将两个数值相加即可。

const arr = [1, 2, 3, 4];
const result = arr.reduce((acc, cur) => acc + cur, 0);
console.log(result); // 10

2. 数组最大值

同样可以使用reduce方法来计算一个数组中的最大值。只需将reduce方法的初始值设置为第一个元素,每次迭代时比较当前元素与累加器的值,返回较大的值即可。

const arr = [3, 6, 2, 8, 4];
const result = arr.reduce((acc, cur) => cur > acc ? cur : acc);
console.log(result); // 8

3. 数组去重

可以使用reduce方法将一个数组去重,遍历数组时将已有元素存储到累加器中,每次迭代时判断当前元素是否已经存在于累加器中,若不存在则存储到累加器中。

const arr = [1, 2, 3, 2, 4, 1];
const result = arr.reduce((acc, cur) => acc.includes(cur) ? acc : [...acc, cur], []);
console.log(result); // [1, 2, 3, 4]

4. 数组计数

countBy方法可以统计一个数组中各个元素出现的次数,返回一个对象。

const arr = ['a', 'b', 'a', 'c', 'b', 'a'];
const result = arr.reduce((acc, cur) => {
  acc[cur] = acc[cur] ? ++acc[cur] : 1;
  return acc;
}, {});
console.log(result); // {a: 3, b: 2, c: 1}

5. 对象成员求和

可以使用reduce方法对一个对象的成员进行求和。将reduce方法的初始值设置为0,每次迭代时将对象成员的值加上累加器的值即可。

const obj = {a: 1, b: 2, c: 3};
const result = Object.values(obj).reduce((acc, cur) => acc + cur, 0);
console.log(result); // 6

6. 对象成员平均值

可以使用reduce方法对一个对象的成员进行平均值计算。首先使用Object.values方法获取对象成员的值组成的数组,然后对其使用reduce方法求和。最后将结果除以成员数量即可得到平均值。

const obj = {a: 1, b: 2, c: 3};
const arr = Object.values(obj);
const result = arr.reduce((acc, cur) => acc + cur, 0) / arr.length;
console.log(result); // 2

7. 对象成员合并

可以使用reduce方法将一个对象的成员合并为一个字符串。首先使用Object.values方法获取对象成员的值组成的数组,然后对其使用reduce方法进行字符串拼接。

const obj = {a: 'Hello', b: 'World', c: '!'};
const result = Object.values(obj).reduce((acc, cur) => acc + cur, '');
console.log(result); // 'HelloWorld!'

8. 多维数组展平

可以使用reduce方法将一个多维数组展平为一维数组。每次迭代时判断当前元素是否为数组,若是则递归调用reduce方法进行展平,否则将元素存储到累加器中。

const arr = [1, [2, [3, [4]]]];
const flatten = arr => arr.reduce((acc, cur) => {
  return Array.isArray(cur) ? [...acc, ...flatten(cur)] : [...acc, cur];
}, []);
const result = flatten(arr);
console.log(result); // [1, 2, 3, 4]

9. 函数式Compose

可以使用reduce方法将多个函数组合为一个函数,函数式编程中称之为Compose。每次迭代时将当前函数作为参数传入上一个函数中执行。

const compose = (...fns) => x => fns.reduceRight((acc, cur) => cur(acc), x);
const f1 = x => x * 2;
const f2 = x => x - 1;
const f3 = x => x + 10;
const fn = compose(f1, f2, f3);
const result = fn(5);
console.log(result); // 19

10. 函数式Pipe

可以使用reduce方法将多个函数组合为一个函数,函数式编程中称之为Pipe。每次迭代时将当前函数作为参数传入上一个函数中执行。

const pipe = (...fns) => x => fns.reduce((acc, cur) => cur(acc), x);
const f1 = x => x * 2;
const f2 = x => x - 1;
const f3 = x => x + 10;
const fn = pipe(f1, f2, f3);
const result = fn(5);
console.log(result); // 19

以上就是JavaScript中reduce方法的十个常用场景技巧,可以广泛地应用于各种开发场景中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript中Reduce10个常用场景技巧 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • PHP json_encode中文乱码解决方法

    下面是详细讲解“PHP json_encode中文乱码解决方法”的完整攻略: 问题描述 在使用PHP中的json_encode对中文进行编码时,有时会出现中文乱码的情况。这是因为PHP默认使用的字符集为ISO 8859-1,而中文字符需要使用UTF-8字符集进行编码。所以,需要对代码进行一些修改,才能正确地将中文字符编码为JSON格式字符串。 解决方法 要解…

    JavaScript 2023年5月19日
    00
  • bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享

    下面我会详细讲解 “bootstrap table之通用方法”的完整攻略,并提供两个示例说明。 一、 引入必要的文件和库 首先,我们需要引入必要的文件和库,包括 Bootstrap、jQuery、moment以及 <!– Bootstrap –> <link href="https://cdn.bootcdn.net/ajax…

    JavaScript 2023年6月10日
    00
  • JavaScript中的函数申明、函数表达式、箭头函数

    在 JavaScript 中,函数定义有三种方式:函数声明、函数表达式和箭头函数。 函数声明 函数声明是定义一个函数的常见方式,语法如下: function add(x, y) { return x + y; } 其中 add 是函数名,x 和 y 是参数,return 关键字用于返回计算结果。 函数声明有一个重要的特点,就是函数可以在声明之前被调用(也就是…

    JavaScript 2023年5月27日
    00
  • .Net 单例模式(Singleton)

    单例模式(Singleton)概述 单例模式是设计模式中一种常见的创建型模式,其定义为:保证一个类仅有一个实例,并提供一个访问它的全局访问点。使用单例模式可以确保一个类只被创建一次,并且该类的唯一实例可以被进行全局访问和控制。 在 .Net 中,单例模式可以应用于许多场景,例如控制数据库连接、记录系统日志、全局配置信息等等。下面将介绍如何在 .Net 应用程…

    JavaScript 2023年5月28日
    00
  • Flash & Ajax 操作 XML 实例:无刷新分页

    Flash & Ajax 操作 XML 实例:无刷新分页 介绍 Flash和Ajax都支持与服务器进行异步数据交换,做网站时常常会用到无刷新分页这个功能。本文将介绍在Flash和Ajax协作下实现无刷新分页的完整攻略。 步骤 1. 创建XML文件 首先创建一份XML文件,用于存储需要分页显示的数据。例如: <pages> <page…

    JavaScript 2023年6月11日
    00
  • JavaScript 中Date对象的格式化代码方法汇总

    下面就详细讲解“JavaScript 中Date对象的格式化代码方法汇总”的完整攻略。 介绍 在 JavaScript 中,Date 对象是用于处理日期和时间的对象,提供了处理和格式化日期、时间的方法。但是,由于不同的地区和文化对日期格式有不同的习惯,因此需要对日期进行格式化。下面是一些常见的日期格式化方法。 代码 1.使用 toLocaleDateStri…

    JavaScript 2023年5月27日
    00
  • JavaScript获取客户端IP的方法(新方法)

    JavaScript获取客户端IP的方法(新方法)攻略 在Web开发中,有时候需要获取客户端IP地址以便进行位置定位、用户分析等用途。本攻略将详细讲解使用JavaScript获取客户端IP的方法。 一、使用第三方服务API 我们可以通过调用第三方服务API的方式获取客户端IP地址。其中比较常用的是 ipify,它提供了简单易用、速度快、支持IPv6等特点。 …

    JavaScript 2023年5月27日
    00
  • 脚本收藏iframe

    下面是“脚本收藏iframe”的完整攻略: 1. 什么是脚本收藏iframe 脚本收藏iframe即是通过一个特定的网站,将一些常用或比较重要的javascript脚本进行收藏和管理,并用一个iframe嵌入到自己的网页中,以便后续调用,从而达到提高网页开发效率的目的。 2. 开始使用脚本收藏iframe 要使用脚本收藏iframe,我们需要遵循以下步骤: …

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部