2016-01-15 4 views
5

मैं कुछ मिनट पहले कोडेकैमेडी पर कुछ जावास्क्रिप्ट का अभ्यास कर रहा था और मुझे कुछ उलझन में मिला। यहाँ कोड है:क्यों और स्थिति निष्पादित की जाती है भले ही स्थिति सही है?

var friends = {}; 
friends.bill = { 
    firstName: "Bill", 
    lastName: "Gates", 
    number: "(206) 555-5555", 
    address: ['One Microsoft Way','Redmond','WA','98052'] 
}; 
friends.steve = { 
    firstName: "Steve", 
    lastName: "Jobs", 
    number: "(408) 555-5555", 
    address: ['1 Infinite Loop','Cupertino','CA','95014'] 
}; 

var list = function(obj) { 
    for(var prop in obj) { 
    console.log(prop); 
    } 
}; 

var search = function(name) { 
    for(var prop in friends) { 
    if(friends[prop].firstName === name) { 
     console.log(friends[prop]); 
     return friends[prop]; 
    } 
    else { 
     return "contact not found"; 
    } 
    } 
}; 

list(friends); 
search("Steve"); 

समस्या यह है कि जब मैं खोज समारोह में एक आर्ग के रूप में स्ट्रिंग "स्टीव" गुजरती हैं, यह रिटर्न हालत "संपर्क नहीं मिला", जबकि जब मैं स्ट्रिंग पारित "बिल" है एक ही खोज फ़ंक्शन में एक तर्क के रूप में, यह संपर्क जानकारी प्रदर्शित करता है।

यह कैसे संभव है? मैं क्या गलत कर रहा हूं?

उत्तर

6

आपके कोड में, लूप के पहले पुनरावृत्ति में, prop मान Steve से कुछ और है। इसलिए, if स्थिति विफल हो जाती है, else भाग तक पहुंच जाती है और तुरंत contact not found लौटाती है।

लेकिन, आप not found संदेश केवल जब वस्तुओं के firstName मैचों में से कोई भी, इस

function search(name) { 
    for (var prop in friends) { 
    if (friends[prop].firstName === name) { 
     return friends[prop]; 
    } 
    } 
    return "contact not found"; 
}; 
+0

धन्यवाद, लेकिन जब मैं "स्टीव" के बजाय "बिल" स्ट्रिंग पास करता हूं तो यह क्यों काम करता है? –

+0

@ अहमद मैगी 'बिल' पहली कुंजी लौटा दी जाती है जब 'दोस्तों' ऑब्जेक्ट को फिर से चालू किया जाता है। आप इसकी पुष्टि करने के लिए 'for' लूप के अंदर' console.log' का उपयोग कर सकते हैं। – thefourtheye

4
else { 
    return "contact not found"; 
} 

आप नहीं लौट रहे हैं की तरह के रूप में जल्दी ही पाया आप किसी संपर्क से मेल नहीं खाता खोजने के रूप में वापस आ जाएगी ।

आपको आइटम से बाहर होने तक हार नहीं देना चाहिए।

संबंधित मुद्दे