您现在的位置:首页 >> 前端 >> 内容

公共项查找---02_多个数组查找子项

时间:2017/5/5 17:02:00 点击:

  核心提示:公共项查找---02_多个数组查找子项。scriptvar arr_arr = [[3,8,5,3],[1,9,4,3,6,7,5,2],[3,4,5],[5,6,7,3]];//公共子项 3 , 5...

公共项查找---02_多个数组查找子项。



<script>

    var arr_arr = [[3,8,5,3],[1,9,4,3,6,7,5,2],[3,4,5],[5,6,7,3]];  //公共子项 3 , 5
    /*
    * 算法:
    *   1.先去重,然后将数组合并为一个数组
    *   2.将合并的数组进行遍历,把单个数字形成一个数组,例如[3,3,3,3]
    *   3、然后取出 数字数组的长度 === arr_arr.length的头一项
    * */
    function find(arr){
        // 存储公共子项
        let result = [];
        // 合并为大数组
        let bigArr = [];
        // 遍历最外围数组, 合并为大数组
        arr.forEach(function (ele) {
            // 这时的ele依然是个数组,例如[3,8,5]
            // 1.去重,合并为一个大数组
            unique(ele).forEach(function (num) {
                bigArr.push(num);
            });
        });
        // 2.将合并的数组进行遍历,把单个数字形成一个数组,例如[3,3,3,3]
        // 从大数组中取出每一个值,形成数组
        let obj = {};
        bigArr.forEach(function (num) {
           if ( !obj[num] ) {
               obj[num] = [num];
           } else {
               obj[num].push(num);
           }
        });
        //console.log(obj);
        //  3、然后取出 数字数组的长度 === arr_arr.length的头一项
        for ( let attr in obj ) {
            if ( obj[attr].length === arr.length ) {
                result.push(Number(attr));
            }
        }
        //console.log(result);
        return result;
    }
    /*
    * 数组去重
    * */
    function unique(arr){
        // 去重后的数组
        let result = [];
        let obj = {};
        // 遍历数组
        arr.forEach(function (ele) {
            if ( !obj[ele] ) {
                obj[ele] = 1;
                result.push(ele);
            }
        });
        return result;
    }
    console.log(find(arr_arr));
</script>

作者:网络 来源:光明大神棍的博客
  • 上一篇:Spring简介
  • 下一篇:网页添加icon小图标