1. 程式人生 > >公共項查詢---04_多個數組查詢子字串

公共項查詢---04_多個數組查詢子字串


<!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>