博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ES6 之reduce的高级技巧
阅读量:6398 次
发布时间:2019-06-23

本文共 1395 字,大约阅读时间需要 4 分钟。

reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。reduce() 方法接受四个参数:初始值(或者上一次回调函数的返回值),当前元素值,当前索引,调用 reduce() 的数组。

reduce() 的几个强大用法:

数组求和

var total = [ 0, 1, 2, 3 ].reduce(( acc, cur ) => {    return acc + cur}, 0);console.log(total)   // 6

二维数组转为一维数组

var array = [[1, 2], [3, 4], [5, 6]].reduce(( acc, cur ) => {    return acc.concat(cur)}, []);console.log(array)  // [ 0, 1, 3, 4, 5, 6 ]

计算数组中每个元素出现的次数

1. 方法一

let names = ['tom', 'jim', 'jack', 'tom', 'jack'];const countNames = names.reduce((allNames, name) => {  if (name in allNames) {    allNames[name] ++;  }  else {    allNames[name] = 1;  }  return allNames;}, {});console.log(countNames)  // { tom: 2, jim: 1, jack: 2 }

2. 方法二

const arraySum = (arr, val) => arr.reduce((acc, cur) => {    return cur == val ? acc + 1 : acc + 0}, 0);let arr = [ 0, 1, 3, 0, 2, 0, 2, 3 ]console.log(arraySum(arr, 0)) // 数组arr中 0 元素出现的次数为3

数组去重

1.方法一

let arr = [1, 2, 1, 2, 3, 5, 4, 5, 3, 4, 4, 4, 4];let result = arr.sort().reduce((init, current) => {    if (init.length === 0 || init[init.length - 1] !== current) {        init.push(current);    }    return init;}, []);console.log(result); //[1,2,3,4,5]

2.方法二

当然,对于数组去重,也可以直接使用es6的…[拓展运算符] + Set 实现:

// console.log(...new Set([1,2,3,4,5,2,4,1]))const dedupe = (array) => {    return Array.from(new Set(array));}console.log(dedupe([1, 1, 2, 3])) //[1,2,3]

转载于:https://www.cnblogs.com/cckui/p/9267542.html

你可能感兴趣的文章
Python——SSHClient.py
查看>>
MVC解决更新冲突问题
查看>>
江西理工大学南昌校区cool code竞赛
查看>>
[LeetCode] Trim a Binary Search Tree 修剪一棵二叉搜索树
查看>>
Ubuntu SDL lib 安装
查看>>
Java 并发编程内部分享PPT分享
查看>>
关于discuz中禾金投票系统循环出现引导页的问题
查看>>
C#开源系统大汇总
查看>>
Linux服务器安全初始化自选安装Shell脚本
查看>>
PyCharm教程
查看>>
Python 简单的数据结构(一)
查看>>
谁说我们只会做工作流?做实验室管理系统我们也内行。
查看>>
yum安装开发库
查看>>
我的友情链接
查看>>
开源Python网络爬虫资料目录
查看>>
NSRunLoop Internals
查看>>
Hadoop2.4.1分布式安装
查看>>
PHP利用socket来实现POST数据
查看>>
Connection is read-only问题的产生原因与解决方法
查看>>
Proxmox VE 部署维护
查看>>