2016-05-19 12 views
0

aus dem folgenden Code zu konvertieren Ich versuche, allgemeine Wörter (aus zwei Strings gegeben) zu erhalten, ohne die Zeichenfolgen in Array zu konvertieren. Der folgende Code zeigt die gebräuchlichen Wörter an und zeigt sie an, aber das Problem ist, dass dieser Code nicht alle Duplikate entfernt, da er alle gebräuchlichen Wörter anzeigt, ohne Duplikate zu entfernen. Ich habe versucht, zu suchen, aber die Lösung ist, split() und filter() zu verwenden. Gibt es eine andere Möglichkeit, Duplikate zu entfernen?Entfernen Sie doppelte Wörter aus einer Zeichenfolge, ohne es in Array

Vielen Dank im Voraus.

function common() { 
 
    var str1 = "is hello and he is the only hello is" 
 
    var str2 = "is hello you and is and he and is the only"; 
 
    var min = 0; 
 
    var max = 0; 
 
    var count = 0; 
 
    var count1 = 0; 
 
    var count2 = 0; 
 
    var out = ''; 
 
    var out2 = ''; 
 
    var out3 = ''; 
 
    var len1 = str1.length; 
 
    var len2 = str2.length; 
 
    var output = ''; 
 
    var temp = 0; 
 
    var temp1 = 0; 
 
    for (m = 0; m < str1.length; m++) { 
 
    temp1 = 0; 
 
    if (str1.charAt(m) == " " || m == str1.length - 1) { 
 
     count1++; 
 
     if (m == str1.length - 1) { 
 
     out1 = str1.slice(temp, m + 1); 
 
     } else { 
 
     out1 = str1.slice(temp, m); 
 
     } 
 
     for (i = temp1; i < str2.length; i++) { 
 
     if (str2.charAt(i) == " " || i == str2.length - 1) { 
 
      if (i == str2.length - 1) { 
 
      out2 = str2.slice(temp1, i + 1); 
 
      } else { 
 
      out2 = str2.slice(temp1, i); 
 
      } 
 
      temp1 = i + 1; 
 
      if (out1 == out2) { 
 
      if (out3.indexOf(out1) == -1) { 
 
       out3 += out1 + ' '; 
 
      } else if (out3.indexOf(out1) >= 0) { 
 
       var r = out3.indexOf(out1); 
 
       while (out3.charAt(r) != " ") { 
 
       r++; 
 
       } 
 
       if (r != out1.length) { 
 
       out3 += out1 + ' '; 
 
       } 
 
      } 
 
      } 
 
     } 
 
     } 
 
     temp = m + 1; 
 
    } 
 
    } 
 
    console.log(out3); 
 
    out = document.getElementById("tarea3"); 
 
    out.value = out3; 
 
}
<textarea id="tarea"></textarea> 
 
<textarea id="tarea2"></textarea> 
 
<textarea id="tarea3"></textarea> 
 
<button type="button" onclick="common()">Run</button>

+5

Wenn eine Einschränkung gibt es, könnte es sinnvoll sein, diese Beschränkung zu erklären, warum existiert. –

+0

* Filter * ist eine Array-Methode, also wie werden Sie es verwenden, ohne die Zeichenfolge in ein Array oder array-ähnliches Objekt zu verwandeln? – RobG

+0

die Ausführungszeit der Zeichenfolge wird weniger als Array, also bevorzuge ich Zeichenfolge, ohne es in Array zu konvertieren. – Johny

Antwort

0

Keine Arrays keine regex Sie die gemeinsamen Worte wie diese bekommen kann. Der Rest liegt an Ihrer Verarbeitung.

var str1 = "is hello and he is the only hello is", 
 
    str2 = "is hello you and is and he and is the only", 
 
    lut = {}, 
 
    stc = "", 
 
     i = 0; 
 

 
while (i <= str1.length) { 
 
    if (str1[i] !== " " && i < str1.length) { 
 
    \t stc+=str1[i++]; 
 
    } else { 
 
    \t lut[stc] = "unmatch"; 
 
    \t stc = ""; 
 
    \t ++i; 
 
    } 
 
} 
 

 
    i = 0; 
 
stc = ""; 
 
while (i <= str2.length) { 
 
    if (str2[i] !== " " && i < str2.length) { 
 
    \t stc+=str2[i++]; 
 
    } else { 
 
    \t lut[stc] = lut[stc] ? "common" : "unmatch"; 
 
    \t stc = ""; 
 
    \t ++i; 
 
    } 
 
} 
 
console.log(lut);

Verwandte Themen