2012-08-28 13 views
7

पर जांच करने के लिए टाइपफ़ोफ़ का उपयोग करके मैं एक codecademy.com अभ्यास पर काम कर रहा हूं जहां हम किसी ऑब्जेक्ट के माध्यम से लूप के लिए कथन में उपयोग करते हैं और यह देखने के लिए अलग-अलग भाषाओं में हैलो प्रिंट करते हैं कि यह देखने के लिए कि क्या गुणों के मूल्य हैं भाषा वस्तु 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); 
     } 
    } 

ये व्यायाम

वस्तुओं यदि आप वास्तव में इसके बारे में सोचो तो विदेशी नहीं हैं के लिए निर्देश दिए गए हैं!

याद रखें कि आप टाइपफ़ myVariable का उपयोग करके एक चर के प्रकार को समझ सकते हैं। जिन प्रकारों के लिए हम अब चिंतित हैं वे "ऑब्जेक्ट", "स्ट्रिंग" और "संख्या" हैं।

याद के लिए में पाश:

के लिए (obj में वर एक्स) {executeSomething

(); }

यह ओबीजे के सभी गुणों में से एक के माध्यम से जाएगा और लूप के प्रत्येक भाग पर एक्स का गुण नाम एक्स को असाइन करेगा।

चलो इन दो अवधारणाओं के बारे में हमारे ज्ञान को गठबंधन करते हैं।

भाषा ऑब्जेक्ट की जांच करें। तीन गुण तार हैं, जबकि एक संख्या है।

हैलो कहने के तीन तरीकों को मुद्रित करने के लिए एक इन-इन लूप का उपयोग करें। लूप में, आपको यह देखने के लिए जांच करनी चाहिए कि संपत्ति मान एक स्ट्रिंग है, इसलिए आप गलती से किसी संख्या को प्रिंट नहीं करते हैं।

+2

के लिए मुझे

काम करने के लिए है और सवाल यह है कि ... – zerkms

+2

एक प्रश्न चिह्न (?) के बिना और किसी प्रश्न के सामान्य वाक्यविन्यास का उपयोग किए बिना एक प्रश्न उठाना संभव है। ओपी ने दिखाया कि मेरी समस्या क्या थी, और दो लोगों ने उत्तर दिया (और जो लोग ऊपर उठाए गए थे) ने इसे स्पष्ट रूप से समझा। – Leahcim

+1

हां, आपने कोड और संबंधित स्पष्ट आउटपुट दिया है। यह बताने का एक अच्छा विचार है कि * आपकी * अपेक्षा क्या थी, क्योंकि कोड पूरी तरह से मान्य है। – zerkms

उत्तर

15

ऐसा इसलिए है क्योंकि आप ऑब्जेक्ट के 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); 
    } 
} 
1

आप वस्तु के कुंजी की जांच कर रहे हैं, मूल्य नहीं। ऑब्जेक्ट के निर्माता को इसके प्रकार का निर्धारण करने के लिए आमतौर पर जांच करना एक अच्छा अभ्यास है।

कुछ इस तरह:

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

for(i in languages) { 

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

}; 
2

यहाँ जवाब है:

(उपयोग typeof और फिर ऑब्जेक्ट नाम के बयान और परीक्षण के लिए अपने में वर के बाद क्या यह बराबर है "स्ट्रिंग" करने के लिए)
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

नीचे कोडिंग केवल स्ट्रिंग मान करने के लिए उपयोगी है। इसका उपयोग करके इसके बाद की संपत्ति की सूची तक पहुंचने के लिए चर का उपयोग करके जांच करें कि मान isNaN का उपयोग करके एक नॉटनंबर है।नीचे दिए गए कोड आप

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

के लिए उपयोगी है इस मूल्य में के लिए के लिए (भाषाओं में वर एक्स) {

if(typeof languages[x] === "string"){ 
    console.log(languages[x]); 
} else } 
संबंधित मुद्दे