首页 > 代码库 > 用reduce装逼 之 多个数组中得出公共子数组,统计数组元素出现次数
用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装逼 之 多个数组中得出公共子数组,统计数组元素出现次数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。