2016-12-15 2 views
-3

Dies ist für einen CodeAcademy Javascript-Kurs. Ich bleibe irgendwie dabei und weiß nicht, wie ich vorgehen soll.Wie schiebe ich Text in ein Array? (Javascript)

Ich muss in der Variable "Text" nach dem Namen "Alex" suchen können. Dann brauche ich die 2. For-Schleife, um die Buchstaben in das "Hits" -Array zu schieben.

 /*jshint multistr:true */ 
var text = "My name is Alex. What is yours? Again, my name is Alex"; 
var myName = "Alex"; 
var hits = []; 

for(var i = 0; i < text.length; i++){ 

if(i === text["A"]){ 


for(var j = i; i + myName.length; i++){ 

    hits.push("Alex");} 

} 


    } 
+2

Als Hinweis, die indexOf Funktion suchen, die alle JavaScript-Strings mit kommen https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/ Global_Objects/String/indexOf – derp

+2

mit [split] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split) für die Zeichenfolge, dann können Sie entweder mit verwenden [concat] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat) für das Array oder mit push. [apply] (https: //developer.mozilla .org/de-DE/docs/Web/JavaScript/Referenz/Global_Objects/Function/apply) an Das Array –

+0

Sie durchlaufen die gesamte 'text'-Zeichenfolge einzeln nacheinander. 'i' ist eine Zahl' if (i === Text ["A"]) {'sollte nicht mit' "A" 'übereinstimmen. 'text [" A "]' erhält keinen Index von 'text' string. 'text [i] ===" A "' Es gibt keine Bedingung bei der zweiten 'for' Schleife. Wenn Sie nur '' A '' angleichen, werden Sie auch '' A ''' '' '' Again "" ankreuzen, wenn Sie die Schleife nicht unterbrechen. – guest271314

Antwort

0

Sie iterieren den gesamten text Zeichenfolge einen Buchstaben nach dem anderen. i ist eine Nummer if(i === text["A"]){ sollte nicht übereinstimmen "A". text["A"] erhält keinen Index von text Zeichenfolge. Verwenden Sie text[i] === "A". Es gibt keine Bedingung für die Schleife i + myName.length; ersetzen Sie j < i + myName.length. Wenn Sie nur "A" zuordnen, wird auch "A" bei "Again" angezeigt, wenn Sie keine break äußere for Schleife verwenden.

Beachten Sie, dass zur Zeit keine Überprüfung erfolgt, dass die erste Übereinstimmung von "A" von "lex" gefolgt von einem Leerzeichen " " Zeichen gefolgt wird.

Sie können alternativ .split() oder .match() verwenden ein Array aller Wörter in text zu bekommen, die die Worte wiederholen, überprüfen Spiel von myName.

var text = "My name is Alex. What is yours? Again, my name is Alex"; 
 
var myName = "Alex"; 
 
var hits = []; 
 

 
outer: for (var i = 0; i < text.length; i++) { 
 
    if (text[i] === "A") { 
 
    for (var j = i; j < i + myName.length; j++) { 
 
     hits.push(text[j]); 
 
    } 
 
    break outer; 
 
    } 
 
} 
 

 
console.log(hits);

Verwandte Themen