簡體   English   中英

在JavaScript中查找常見字符串

[英]Finding common strings in javascript

我試圖在給定的兩個字符串中找到通用的字符串。

例:

string1 = "mega,cloud,two,website,final"
string2 = "window,penguin,literature,network,fun,cloud,final,sausage"
answer = "cloud,final,two"

到目前為止,這就是我得到的:

function commonWords(first, second) {
    var words = first.match(/\w+/g);
    var result = "";
    words.sort();
    for(var i = 0; i < words.length; i++){
        if(second.includes(words[i])){
            result = result.concat(words[i]);
            result += ",";
        }
    }
    result = result.substr(0, result.length -1);
    return result;

}

但是我得到的結果是:

answer = cloud,final

你能幫我嗎? 第一次在StackOverFlow上提問,非常抱歉。

我要做的是先在兩個字符串上拆分 ,然后進行reduce ,然后檢查另一個字符串是否包含當前字符串。 如果是這樣,請將其添加到新陣列。

 const string1 = "mega,cloud,two,website,final" const string2 = "window,penguin,literature,network,fun,cloud,final,sausage" const array1 = string1.split(',') const array2 = string2.split(',') const result = array1.reduce((arr, val) => array2.includes(val) ? arr.concat(val) : arr, []) console.log(result) // Convert it to a string if desired console.log(result.toString()) 

我會使用.split(',')將每個字符串轉換為單詞數組。 然后通過檢查數組的每個項是否在另一個項中,使用.filter過濾第一個數組:

 string1 = "mega,Cloud,two,website,final" string2 = "window,penguin,literature,network,fun,cloud,final,sausage" array1 = string1.toLowerCase().split(',') array2 = string2.toLowerCase().split(',') var a = array1.filter(word => -1 !== array2.indexOf(word)); console.log(a) 

在將字符串轉換為數組之前,我已經應用了.toLowerCase()以便腳本可以在結果中返回cloud ,如果它在第一個中顯示為“ C Loud”,在第二個中顯示為“ c Loud”

請嘗試以下操作:

 string1 = "mega,cloud,two,website,final" string2 = "window,penguin,literature,network,fun,cloud,final,sausage"; var arr1= string1.split(","); var arr2 = string2.split(","); var result = []; arr1.forEach(function(str){ arr2.forEach(function(str2){ if(str2.indexOf(str) != -1) result.push(str); }); }); var answer = result.join(","); console.log(answer); 

函數的問題是您還將字符串轉換為第二個數組。

function commonWords(first, second) {
    var words = first.match(/\w+/g); // word is a array type
    var result = ""; 
    words.sort();
    for(var i = 0; i < words.length; i++){
        if(second.includes(words[i])){ //second should be string type
            result = result.concat(words[i]);
            result += ",";
        }
    }
    result = result.substr(0, result.length -1);
    return result;

}

或者你可以嘗試一下

    first = "mega,cloud,two,website,final"
second = "window,penguin,literature,network,fun,cloud,final,sausage"

function commonWords(first, second) {
    var words = first.match(/\w+/g);
    var result = "";
    words.sort();
    for(var i = 0; i < words.length; i++){
        if(second.includes(words[i])){
            result = result.concat(words[i]);
            result += ",";
        }
    }
    result = result.substr(0, result.length -1);
    return result;

}

console.log(commonWords(first, second));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM