13

私はcodecademy.comの演習に取り組んでおり、for-inステートメントを使用してオブジェクトをループし、言語オブジェクトのプロパティの値が文字列であるかどうかを確認することで、さまざまな言語でhelloを出力します。typeof

値が文字列であるかどうかを確認するためのチェックが機能していません。私のループは私にこの結果を与えます

english
french
notALanguage
spanish

コード

   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); 
        }
    }

これらは演習の手順です

あなたが本当にそれについて考えるならば、オブジェクトはそれほど異質ではありません!

typeof myVariableを使用すると、変数の型を把握できることを忘れないでください。今のところ関係しているタイプは、「オブジェクト」、「文字列」、および「数値」です。

for-inループを思い出してください。

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

これにより、objのすべてのプロパティが1つずつ確認され、ループの実行ごとにプロパティ名がxに割り当てられます。

これら2つの概念に関する知識を組み合わせてみましょう。

言語オブジェクトを調べます。3つのプロパティは文字列ですが、1つは数値です。

for-inループを使用して、挨拶する3つの方法を出力します。ループでは、誤って数値を出力しないように、プロパティ値が文字列であるかどうかを確認する必要があります。

4

6 に答える 6

34

keyこれは、オブジェクトのをチェックしているためです。実際の値を確認するには、のようなことをする必要がありますobject[key]。これを試して:

 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); 
    }
}
于 2012-08-28T04:15:44.163 に答える
4

答えは次のとおりです:(typeofを使用してから、forステートメントでオブジェクト名の後にvarを使用し、それが「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 ;
}
于 2013-08-11T03:33:31.680 に答える
1

値ではなく、オブジェクトのキーをチェックしています。通常、オブジェクトのコンストラクターをチェックして、そのタイプを判別することをお勧めします。

このようなもの:

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

for(i in languages) {

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

};
于 2012-08-28T06:25:04.147 に答える
1

「文字列」は文字列と同じではありません。文字列のtypeofをテストする1つの方法を見つけました。

if (typeof something === typeof "test") ...

もちろん、「文字列」を使用して比較することもできますが、実際の文字列であれば何でもかまいません。

于 2018-10-03T12:59:53.650 に答える
0

以下のコーディングは、文字列値のみを実行する場合にも役立ちます。変数を使用してabjectのプロパティリストにアクセスし、その後、isNaNを使用して値がNotANumberであることを確認します。以下のコードは便利です。

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]);
}
于 2014-06-24T05:10:15.797 に答える
0

これは私のために働く価値のあるものです

for(言語のvar x){

if(typeof languages[x] === "string"){
    console.log(languages[x]);
} else }
于 2015-08-30T04:52:40.607 に答える