[英]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.