作家
登录

JavaScript30秒, 从入门到放弃

作者: 来源: 2017-12-25 14:05:13 阅读 我要评论

  • // countOccurrences([1,1,2,1,2,3], 1) -> 3 
  • 统计一个元素在一个数组中出现的次数。

    应用 Array.reduce() 在遍历过程中如不雅指定元素在数组中出现,则增长它的次数值,默认次数为0。

    1. ➜  code cat countOccurrences.js 
    2. const countOccurrences = (arr, value) => 
    3.   arr.reduce((a, v) => (v === value ? a + 1 : a + 0), 0); 
    4.  
    5. console.log(countOccurrences([1, 1, 2, 1, 2, 3], 1)); 
    6. console.log(countOccurrences([1, 1, 2, 1, 2, 3], 5)); 
    7. ➜  code node countOccurrences.js 

    三元运算符 (v === value ? a + 1 : a + 0) 遍历过程中断定遍历数组值 v 是否严格等于指定值 value ,是,次数 a+1 ;否, a+0 。

    最后的一个逗号后面的0,是这个初始值,即 a=0 ,这个懂 reduce 办法都知道,特别指出是,因为这个函数必定会有返回值,如不雅指定元素没有在数组中出现一次,返回值是 0 ,所以必须得初始化为 0 。

    deepFlatten

    Deep flattens an array.

    Use recursion. Use Array.concat() with an empty array ( [] ) and the spread operator ( ... ) to flatten an array. Recursively flatten each element that is an array.

    1. const deepFlatten = arr => [].concat(...arr.map(v => Array.isArray(v) ? deepFlatten(v) : v)); 
    2. // deepFlatten([1,[2],[[3],4],5]) -> [1,2,3,4,5] 

    深度铺平一个数组。

    应用递归办法。结合 Array.concat() 、空数组 [] 和 ES6 的扩大运算符 … 来铺平一个数组,如不雅铺平的元素照样一个数组,就再递归应用该办法。

    1. ➜  code cat deepFlatten.js 
    2. const deepFlatten = arr => 
    3.   [].concat(...arr.map(v => (Array.isArray(v) ? deepFlatten(v) : v))); 
    4.  
    5. console.log(deepFlatten([1, [2], [[3], 4], 5])); 
    6. ➜  code node deepFlatten.js 
    7. [ 1, 2, 3, 4, 5 ] 

    三元运算符 (Array.isArray(v) ? deepFlatten(v) : v) 断定 v 是否是一个数组,是,返回递归应用 deepFlatten(v) 后的值;否,直接返回 v 。

    该办法是深度铺平办法,在很多时刻还有特定的铺平一层的需求, underscore 就有。实现的办法就是再加一个标记参数进行处理即可。具体不讲了。

    应当会写一个系列,今天先写到这,明天持续。

    【编辑推荐】

    1. 圣诞帽头像刷爆微信同伙圈!本相竟是这...附制造办法
    2. 月薪8K与月薪3W的法度榜样员本来差距到底在哪里?
    3. 一种Python全局设备规范以及其魔改
    4. NodeJs爬虫抓取古代典籍,共计16000个页面心得领会总结及衔目分享
    【义务编辑:未丽燕 TEL:(010)68476606】

      推荐阅读

      NodeJs爬虫抓取古代典籍,共计16000个页面心得体会总结及项目分享

    【限时免费】岁尾最强一次云计算大年夜会,看传统、社区、互联网企业若何碰撞? 之前研究数据,零零碎散的写过一些数据抓取的爬虫,不过写的比较随便。有很多处所如今看起来并不是很合理 这>>>详细阅读


    本文标题:JavaScript30秒, 从入门到放弃

    地址:http://www.17bianji.com/lsqh/40136.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)