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