今天在偶然间查看到了一段代码,代码使用了很短的篇幅完成了字符串统计相同字符次数这个经典面试题,其中用到了reduce这个方法,网上查了查,没有查到什么有价值的东西,导致浪费了我一些时间才看懂,现将我的思路整理如下:

原代码:
var arr="qweqrq"
var info= arr.split('').reduce((a,b)=>
(a[b]++ || (a[b]=1),a)
,{})
console.log(info)
代码思路是这样的,先将字符串arr通过split方法切割成数组,然后使用reduce,这个方法干了什么呢,分为这几步:
1.首先reduce会接收一个callback来对数组里的每一个元素执行,如果有第二个参数如上例:{}。,那么callback将会使用这个{}作为参数来和数组中的第一个元素一同传入callback;
2.传入参数之后,会进行一个与门短路操作,也可以叫默认值操作,当a[b]++成真,则返回a[b]。而这里的a为{},b为"q",很明显a中并没有b,执行a[b]=1,那么就会给a[b]赋值为1,后面是一个逗号表达式,所以会返回有了a[b]:1这样属性的a对象;
与门短路操作:如果第一个操作数的值为true,进行短路操作,直接产生第一个操作数的值。如果为false,则产生第二个操作数的值。
逗号表达式:逗号表达式的一般形式是:表达式1,表达式2,表达式3……表达式n。逗号表达式的求解过程是:先计算表达式1的值,再计算表达式2的值,……一直计算到表达式n的值。最后整个逗号表达式的值是表达式n的值。
3.之后要说下reduce函数,它可以将之前一次执行后返回的结果作为参数继续和之后的元素一同传入callback执行,相当于fn(fn(fn(fn(a,b),c),d),e),fn即为callback;
4.在本例中,因为有第二个参数{}传入,所以callback执行了6次。相当于对数组中每一个元素都进行了录入和查重操作,比如当callback运行到第四次,这时的a是{q:1,w:1,e:1},执行callback,a[b]即a['q']存在,执行a['q']++,a['q']值为2,以此类推,最后得到的就是一个以数组每个元素为属性名,出现次数为属性值的对象。
需要注意的是,reduce是es5推出的方法,ie8及以下都不兼容。
以上所述是小编给大家介绍的Javascript面试经典套路reduce函数查重,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# javascript
# reduce
# js
# 面试套路
# 如何在面试中手写出javascript节流和防抖函数
# JavaScript基础学习之splice()函数详解
# JavaScript函数式编程(Functional Programming)组合函数(Compos
# JS前端面试必备——基本排序算法原理与实现方法详解【插入/选择/归并/冒泡/快速排序】
# 「中高级前端面试」JavaScript手写代码无敌秘籍(推荐)
# JavaScript前端面试组合函数
# 第一个
# 第二个
# 值为
# 小编
# 的是
# 组中
# 是一个
# 都不
# 将会
# 在此
# 是这样
# 以此类推
# 给大家
# 它可以
# 什么呢
# 会给
# 几步
# 很明显
# 干了
# 有价值
相关文章:
如何高效生成建站之星成品网站源码?
大学网站设计制作软件有哪些,如何将网站制作成自己app?
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
高防服务器租用指南:配置选择与快速部署攻略
如何在香港服务器上快速搭建免备案网站?
制作营销网站公司,淘特是干什么用的?
建站上市公司网站建设方案与SEO优化服务定制指南
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
建站之星免费版是否永久可用?
电商网站制作公司有哪些,1688网是什么意思?
如何快速搭建支持数据库操作的智能建站平台?
外贸公司网站制作哪家好,maersk船公司官网?
济南专业网站制作公司,济南信息工程学校怎么样?
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
如何用IIS7快速搭建并优化网站站点?
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
如何在七牛云存储上搭建网站并设置自定义域名?
b2c电商网站制作流程,b2c水平综合的电商平台?
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
定制建站是什么?如何实现个性化需求?
,网页ppt怎么弄成自己的ppt?
如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
如何批量查询域名的建站时间记录?
如何基于PHP生成高效IDC网络公司建站源码?
,怎么用自己头像做动态表情包?
建站之星logo尺寸如何设置最合适?
建站之星如何实现网站加密操作?
如何用美橙互联一键搭建多站合一网站?
相册网站制作软件,图片上的网址怎么复制?
重庆市网站制作公司,重庆招聘网站哪个好?
完全自定义免费建站平台:主题模板在线生成一站式服务
保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?
建站之星在线客服如何快速接入解答?
如何快速搭建高效香港服务器网站?
婚礼视频制作网站,学习*后期制作的网站有哪些?
高性能网站服务器部署指南:稳定运行与安全配置优化方案
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
广州美橙建站如何快速搭建多端合一网站?
已有域名建站全流程解析:网站搭建步骤与建站工具选择
制作充值网站的软件,做人力招聘为什么要自己交端口钱?
*服务器网站为何频现安全漏洞?
高端网站建设与定制开发一站式解决方案 中企动力
名字制作网站免费,所有小说网站的名字?
电脑免费海报制作网站推荐,招聘海报哪个网站多?
实现点击下箭头变上箭头来回切换的两种方法【推荐】
青岛网站建设如何选择本地服务器?
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
如何在企业微信快速生成手机电脑官网?
*请认真填写需求信息,我们会在24小时内与您取得联系。