用reduce装逼 之 多个数组中得出公共子数组,统计数组元素出现次数
Posted 白与小寒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用reduce装逼 之 多个数组中得出公共子数组,统计数组元素出现次数相关的知识,希望对你有一定的参考价值。
昨天做了一道美团的面试题,要求是给N个数组,找出N个数组的公共子数组。
var a = [7,2,3,4,5]; var b = [4,2,3,7,6]; var c = [2,3,3,3,7]; var d = [4,2,3,8,7];
以上四个数组,有公共子数组2, 3,7
function main(){ var result = []; var arr = arguments[0]; for(var i=1 ; i<arguments.length ; i++){ var arr = arguments[i].reduce((a,item)=>{ arr.indexOf(item)!=-1 && a.push(item) return a },[]) } return arr }
具体方法如上,es6清新脱俗的写法,用好reduce可以省好多事情。
同样得出以上数组的数组的元素出现次数应该怎么办;
function main(){ var arr = [].reduce.call(arguments,(a,item)=>a.concat(item),[]); return arr.reduce((a,num)=>{ a[num] && ++a[num] || (a[num]=1); return a },{}) }
这个reduce有没有用的清新通俗呀。
我知道大家心里肯定想着好清新的一逼啊。
没错,学好reduce装逼,其他人只有喊666的份了。
加油咯!!!
以上是关于用reduce装逼 之 多个数组中得出公共子数组,统计数组元素出现次数的主要内容,如果未能解决你的问题,请参考以下文章
PHP二维数组转换成一维数组,一个变量多个二维数组转换成一维数组,PHP二维数组(或任意维数组)转换成一维数组的方法汇总,array_reduce(); array_walk_recursive()