用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装逼 之 多个数组中得出公共子数组,统计数组元素出现次数的主要内容,如果未能解决你的问题,请参考以下文章

js函数之map与reduce

算法总结之 子矩阵的最大累加和问题

PHP二维数组转换成一维数组,一个变量多个二维数组转换成一维数组,PHP二维数组(或任意维数组)转换成一维数组的方法汇总,array_reduce(); array_walk_recursive()

5.23算法练习最长重复子数组#动态规划

如何在 javascript 中递归使用 reduce() 方法? [复制]

在数组的子数组中查找公共元素