公共项查找---04_多个数组查找子字符串

来源:互联网 发布:汽车配件查询软件 编辑:程序博客网 时间:2024/06/02 01:28
<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title></head><body><script>    /*    * 实现过程:    *   1.将arr_str的每一项按照长度升序排列    *   2.找到最短的一项,然后将它的所以子项全部罗列出来,形成一个arrAll数组    *   3.用正则与arr_str剩下的三项进行匹配,形成一个二维数组,类似[[a,a,a], [b,b,b]]    *   4.遍历这个二维数组,如果其中的子项(数组)的长度 = arr_str.length,    *     那么找出子项中第一个最长的那个字符串    *    * */    var arr_str = ['asdshow','helloshow','showhi','hahashowhehe'];  //show    function find(arr) {        //  1.将arr_str的每一项按照长度升序排列        arr.sort(function (a, b) {            return a.length - b.length;        });        //console.log(arr);        // 2.找到最短的一项,然后将它的所以子项全部罗列出来,形成一个arrAll数组        let strArr = [];        let firstStr = arr.shift(); // showhi        //console.log(firstStr);        for ( let i = 0; i < firstStr.length; i++ ) {            for ( let j = i + 1; j <= firstStr.length; j++ ) {                strArr.push( firstStr.substring(i, j) );            }        }        //console.log(strArr);  // s,sh,sho,show,showh,showhi,h,ho....        // 3.用正则与arr_str剩下的三项进行匹配,形成一个二维数组,类似[[a,a,a], [b,b,b]]\        var count = 0; // 最长的字符串的长度        var result = ''; // 最长的字符串        for ( var i = 0; i < strArr.length; i++ ) {            var wholeArr = [];            var re = new RegExp(strArr[i]);            for ( var j = 0; j < arr.length; j++ ) {                var reArr = arr[j].match(re);                if (reArr) {                    wholeArr = wholeArr.concat(reArr);                }            }            // 遍历新数组,如果其中的子项(数组)的长度 = arr_str.length,            // 找出子项中第一个最长的那个字符串            if ( wholeArr.length === arr.length ) {                //console.log(wholeArr);                if ( wholeArr[0].length > count ) {                    count = wholeArr[0].length;                    result = wholeArr[0];                }            }        }        return result;    }    console.log(find(arr_str));</script></body></html>
0 0
原创粉丝点击