ES6之reduce和reduceRight方法应用实例

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;
        }, []);
};

 

posted @ 2019-09-20 14:12  keang  阅读(293)  评论(0编辑  收藏  举报