for循环是最基本的遍历循环,但是有些时候并不是很实用,且效率和性能较低,故本文列举出工作学习中碰到的reduce方法应用实例,供自己揣摩熟练应用,以提高自己的研发水平和研发效率。

reduce方法(入参从左往右开始)

reduceRight方法(入参从右往左开始)

这俩方法的入参均一致,不同的地方在于入参顺序。

prev:上一次调用回调时返回的结果,每次调用的结果都会给prev;

cur:当前遍历到的元素;

index:当前遍历到的索引;

arr:进行遍历的数组;

例1

给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 次。

你可以按任意顺序返回答案。

来源:leetcode.com

示例1:
输入:['bella','label','roller'];
输出:['e','l','l']; 示例2:
输入:['cool','lock','cook'];
输出:['c','o'];
/**
* @param {string[]} A
* @return {string[]}
*/
var commonChars = function(A) {
let [shortestWord, ...anyWords] = A;
return shortestWord
.split('')
.reduce((result, letter) => {
const letterExistsInAllWords = !anyWords.filter(word => !word.includes(letter)).length;
if (letterExistsInAllWords) {
anyWords = anyWords.map(word => word.replace(letter, ''));
return [...result, letter];
}
return result;
}, []);
};

ES6之reduce和reduceRight方法应用实例的更多相关文章

  1. JavaScript学习笔记:数组reduce()和reduceRight()方法

    很多时候需要累加数组项的得到一个值(比如说求和).如果你碰到一个类似的问题,你想到的方法是什么呢?会不会和我一样,想到的就是使用for或while循环,对数组进行迭代,依次将他们的值加起来.比如: v ...

  2. 数组之reduce()和reduceRight()

    1.reduce()和reduceRight()方法使用指定的函数将数组元素进行组合,生成单个值. reduce()可以传入两个参数,第一个是执行化简操作的函数.同样这个函数可以有参数,第一个参数代表 ...

  3. es6中reduce()方法和reduceRight()方法

    es6中reduce()方法从左往右开始 参数:prev:它是上一次调用回调时返回的结果,每次调用的结果都会给prev cur:当前的元素 index:当前的索引 arr:循环的数组 返回值:函数累计 ...

  4. JavaScript - reduce方法,reduceRight方法 (Array)

    JavaScript - reduce方法 (Array) 解释:reduce() 方法接收一个函数作为累加器(accumulator),数组 中的每个值(从左到右)开始合并,最终为一个值. 语法:a ...

  5. JavaScript数组方法--reduce、reduceRIght、reverse

    今天写的reduce是比较复杂的一个数组方法,其实在这之前我也用过reduce,可是每次用起来总感觉不那么顺手,主要还是因为不熟,对reduce本身不熟.首先reduce这个单词翻译为中文,不那么直观 ...

  6. JavaScript归并方法reduce()和reduceRight()

    ECMAScript 5还新增了两个归并数组的方法:reduce()和reduceRight().这两个方法都会迭代数组的所有项,然后构建一个最终返回的值.其中,reduce()方法从数组的第一项开始 ...

  7. reduce方法和reduceRight方法

    什么是reduce方法? 先来看一下用用法: var arr = [1, 2, 3, 4] var sum = (a, b) => a + b arr.reduce(sum, 0) 由上面代码可 ...

  8. JavaScript(es6)数组常用的方法

    常用方法 1.forEach() var data = [1,2,3,4,5]; var sum = 0;//求和 data.forEach((item)=>{sum+=item}) //给原数 ...

  9. React构建单页应用方法与实例

    React作为目前最流行的前端框架之一,其受欢迎程度不容小觑,从这门框架上我们可以学到许多其他前端框架所缺失的东西,也是其创新性所在的地方,比如虚拟DOM.JSX等.那么接下来我们就来学习一下这门框架 ...

随机推荐

  1. 守护进程daemon.c

    它的特点是:•不占用控制终端(后台运行)•独立于控制终端•周期性运行 #include<stdio.h>#include<unistd.h>#include<fcntl. ...

  2. 求斐波那契数列中的第N个数

    递推 递归 1.暴力递归 2.记忆化递归 对比下二者的效率

  3. React中兄弟组件传值

    兄弟组件传值 实际上是间接的通过第三方来实现传值,举例,第一个儿子把值传给父亲,父亲在把这个值传给第二个儿子,这样就实现了兄弟组件传值 来看代码: 父组件代码 import React from 'r ...

  4. OpenFOAM——梯形腔双边驱流

    本算例来自<ANSYS Fluid Dynamics Verification Manual>中的VMFL054: Laminar flow in a Trapezoidal Cavity ...

  5. uniapp - 键盘弹起背景图片不会被挤压

    [释义] uni.getSystemInfoSync()获取屏幕可用高度windowScreen做为背景图高度即可(非虚拟DOM也可以使用本思路). [源码] <template> < ...

  6. np.meshgrid

  7. IDEA 加载maven工程时

    IDEA首次加载maven文件时,会无法编译,需要更新maven版本才行. 此处选择“add as maven project”. 然后点击maven对话框中的同步按钮,若仍无法更新,需要删除原有配置 ...

  8. 将AD域漫游用户配置文件放在samba服务器中

    书接上回https://www.cnblogs.com/jackadam/p/11448497.html 我们已经将linux服务器设置为域成员,启动samba服务后,已经实现了使用域账号验证,自动创 ...

  9. upgrade rubygems

    gem install rubygems-update update_rubygems gem update --system gem update

  10. consul ACL 配置范例

    service "dashboard" { policy = "write" } service "dashboard-sidecar-proxy&q ...