统计一个元素在一个数组中出现的次数。
应用 Array.reduce() 在遍历过程中如不雅指定元素在数组中出现,则增长它的次数值,默认次数为0。
- ➜ code cat countOccurrences.js
- const countOccurrences = (arr, value) =>
- arr.reduce((a, v) => (v === value ? a + 1 : a + 0), 0);
- console.log(countOccurrences([1, 1, 2, 1, 2, 3], 1));
- console.log(countOccurrences([1, 1, 2, 1, 2, 3], 5));
- ➜ code node countOccurrences.js
- 3
- 0
三元运算符 (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.
- const deepFlatten = arr => [].concat(...arr.map(v => Array.isArray(v) ? deepFlatten(v) : v));
- // deepFlatten([1,[2],[[3],4],5]) -> [1,2,3,4,5]
深度铺平一个数组。
应用递归办法。结合 Array.concat() 、空数组 [] 和 ES6 的扩大运算符 … 来铺平一个数组,如不雅铺平的元素照样一个数组,就再递归应用该办法。
- ➜ code cat deepFlatten.js
- const deepFlatten = arr =>
- [].concat(...arr.map(v => (Array.isArray(v) ? deepFlatten(v) : v)));
- console.log(deepFlatten([1, [2], [[3], 4], 5]));
- ➜ code node deepFlatten.js
- [ 1, 2, 3, 4, 5 ]
三元运算符 (Array.isArray(v) ? deepFlatten(v) : v) 断定 v 是否是一个数组,是,返回递归应用 deepFlatten(v) 后的值;否,直接返回 v 。
该办法是深度铺平办法,在很多时刻还有特定的铺平一层的需求, underscore 就有。实现的办法就是再加一个标记参数进行处理即可。具体不讲了。
应当会写一个系列,今天先写到这,明天持续。
【编辑推荐】
- 圣诞帽头像刷爆微信同伙圈!本相竟是这...附制造办法
- 月薪8K与月薪3W的法度榜样员本来差距到底在哪里?
- 一种Python全局设备规范以及其魔改
- NodeJs爬虫抓取古代典籍,共计16000个页面心得领会总结及衔目分享
推荐阅读
NodeJs爬虫抓取古代典籍,共计16000个页面心得体会总结及项目分享
【限时免费】岁尾最强一次云计算大年夜会,看传统、社区、互联网企业若何碰撞? 之前研究数据,零零碎散的写过一些数据抓取的爬虫,不过写的比较随便。有很多处所如今看起来并不是很合理 这>>>详细阅读
地址:http://www.17bianji.com/lsqh/40136.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示