核心提示:公共项查找---04_多个数组查找子字符串script/** 实现过程:* 1.将arr_str的每一项按照长度升序排列* 2.找到最短的一项,然后将它的所以子项全部罗列出来,形成一个arrAll数组...
公共项查找---04_多个数组查找子字符串
<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>