2012-08-28 7 views
7

Ich arbeite an einer Übung codecademy.com, wo wir For-In-Anweisungen zu einem Objekt durchlaufen und Hallo in verschiedenen Sprachen drucken, indem Sie überprüfen, ob die Werte der Eigenschaften in Die Sprachen Objekt sind Zeichenketten mit typeofJavaScript: mit typeof, um zu prüfen, ob Zeichenfolge

mein überprüfen, ob der Wert eine Zeichenfolge ist nicht funktioniert. meine Schleifen gibt mir dieses Ergebnis

english 
french 
notALanguage 
spanish 

Der Code

var languages = { 
     english: "Hello!", 
     french: "Bonjour!", 
     notALanguage: 4, 
     spanish: "Hola!" 
    }; 

    // print hello in the 3 different languages 
    for(var hello in languages){ 
     var value = hello; 
     if (typeof value === "string"){ 
     console.log(value); 
     } 
    } 

Dies sind die Anweisungen für die Übung

Objekte sind nicht so fremd, wenn Sie wirklich darüber nachdenken!

Denken Sie daran, Sie können den Typ einer Variablen herausfinden, indem Sie typeof myVariable verwenden. Typen, mit denen wir uns gerade beschäftigen, sind "Objekt", "String" und "Nummer".

Recall der for-Schleife in:

for (var x in obj) {executeSomething(); }

Dies wird durchlaufen alle Eigenschaften von obj eins nach dem anderen und zuweisen den Namen der Eigenschaft zu x bei jedem Lauf der Schleife.

Lassen Sie uns unser Wissen über diese beiden Konzepte kombinieren.

Untersuchen Sie das Sprachenobjekt. Drei Eigenschaften sind Zeichenketten, während Eins eine Zahl ist.

Verwenden Sie eine For-In-Schleife, um die drei Möglichkeiten auszudrücken, hallo zu sagen. In der Schleife sollten Sie überprüfen, ob der Eigenschaftswert eine Zeichenfolge ist, so dass Sie nicht versehentlich eine Zahl drucken.

+2

Und die Frage ist ... – zerkms

+2

ist es möglich, eine Frage ohne ein Fragezeichen (?) Und ohne Verwendung der typischen Syntax einer Frage zu stellen. Das OP zeigte, was mein Problem war, und zwei Personen, die antworteten (und alle Leute, die es aufgewertet hatten), verstanden es deutlich. – Leahcim

+1

ja, Sie haben den Code und die entsprechende offensichtliche Ausgabe gegeben. Es ist eine gute Idee zu sagen, was Ihre * Erwartung war, da der Code einwandfrei funktioniert. – zerkms

Antwort

15

Das liegt daran, dass Sie die key des Objekts überprüfen. Um den tatsächlichen Wert zu überprüfen, sollten Sie etwas wie object[key] tun. Versuchen Sie Folgendes:

var languages = { 
     english: "Hello!", 
     french: "Bonjour!", 
     notALanguage: 4, 
     spanish: "Hola!" 
    }; 

// print hello in the 3 different languages 
for(var hello in languages){ 
    var value = languages[hello]; 
    if (typeof value === "string"){ 
    console.log(value); 
    } 
} 
1

Sie überprüfen Schlüssel des Objekts, nicht den Wert. In der Regel empfiehlt es sich, den Konstruktor eines Objekts zu überprüfen, um seinen Typ zu bestimmen.

Etwas wie folgt aus:

var languages = { 
    english: "Hello!", 
    french: "Bonjour!", 
    notALanguage: 4, 
    spanish: "Hola!" 
}; 

for(i in languages) { 

    if(languages[i].constructor === String) { 
    console.log(languages[i]) 
    }; 

}; 
2

Hier ist die Antwort: (Verwendung typeof und dann den Objektnamen durch die var in Ihrer für Anweisung und Test gefolgt, ob es gleich „string“)

var languages = { 
    english: "Hello!", 
    french: "Bonjour!", 
    notALanguage: 4, 
    spanish: "Hola!" 
}; 

// print hello in the 3 different languages 
for (var x in languages){ 
    if (typeof languages[x] === "string"){ 
     console.log(languages[x]); 
    } 
    else ; 
} 
0

Die folgende Kodierung ist auch nützlich, um nur Zeichenfolgenwerte auszuführen. Wenn Sie die Variable verwenden, um danach auf die Eigenschaftsliste von abject zuzugreifen, überprüfen Sie, ob der Wert eine NotANumber ist, indem Sie isNaN verwenden.Der Code unten ist nützlich für Sie

var languages = { 
english: "Hello!", 
french: "Bonjour!", 
notALanguage: 4, 
spanish: "Hola!" 
}; 

// print hello in the 3 different languages 
for(a in languages) 
{ 
if(isNaN(languages[a])) 
console.log(languages[a]); 
} 
0

dies der für Wert ist für mich

für (var x in Sprachen) zu arbeiten {

if(typeof languages[x] === "string"){ 
    console.log(languages[x]); 
} else } 
Verwandte Themen