2012-05-23 16 views
13

वस्तुओं की जावास्क्रिप्ट सरणी को देखते हुए, मैं प्रत्येक ऑब्जेक्ट की कुंजी और मूल्य कैसे प्राप्त कर सकता हूं?जावास्क्रिप्ट में वस्तु और कुंजी का मूल्य प्राप्त करें?

नीचे कोड से पता चलता मैं क्या करना चाहते हैं क्या, लेकिन स्पष्ट रूप से काम नहीं करता है:

var top_brands = [ { 'Adidas' : 100 }, { 'Nike' : 50 }]; 
var brand_options = $("#top-brands"); 
$.each(top_brands, function() { 
    brand_options.append($("<option />").val(this.key).text(this.key + " " + this.value)); 
}); 

तो, मैं कैसे this.key और this.value सरणी में प्रत्येक प्रविष्टि के लिए मिल सकता है?

+0

आप 'इन ... के लिए' ढूंढ रहे हैं, लेकिन आपके लूप के अर्थशास्त्र गलत हैं। – Jon

+1

यदि ये ऑब्जेक्ट्स में एकमात्र मान हैं, तो मैं संरचना को बदलने के लिए सुझाव देता हूं: 'var top_brands = {'एडिडास': 100, 'नाइकी': 50};' –

+0

संभावित डुप्लिकेट [सभी गुणों के मूल्य कैसे प्राप्त करें एक जावास्क्रिप्ट ऑब्जेक्ट (चाबियाँ जानने के बिना)?] (http://stackoverflow.com/questions/7306669/how-to-get-all-properties-values-of-a-javascript-object-without-nownow-the- कुंजी) –

उत्तर

18

अपनी ऑब्जेक्ट बदलें।

var top_brands = [ 
    { key: 'Adidas', value: 100 }, 
    { key: 'Nike', value: 50 } 
]; 

var $brand_options = $("#top-brands"); 

$.each(top_brands, function(brand) { 
    $brand_options.append(
    $("<option />").val(brand.key).text(brand.key + " " + brand.value) 
); 
}); 

अंगूठे का एक नियम के रूप में:

  • एक वस्तु डेटा और संरचना है।
  • 'Adidas', 'Nike', 100 और 50डेटा हैं।
  • ऑब्जेक्ट कुंजी संरचना हैं। ऑब्जेक्ट कुंजी के रूप में डेटा का उपयोग करना अर्थात् गलत है। इससे बचो।

{Nike: 50} में कोई अर्थशास्त्र नहीं है। "नाइकी" क्या है? 50 क्या है

{key: 'Nike', value: 50} थोड़ा बेहतर है, क्योंकि अब आप इन वस्तुओं की एक सरणी को पुन: सक्रिय कर सकते हैं और मान अनुमानित स्थानों पर हैं। इससे कोड को लिखना आसान हो जाता है जो उन्हें संभालता है।

बेहतर अभी भी {vendor: 'Nike', itemsSold: 50} होगा, क्योंकि अब मूल्य अनुमानित स्थानों पर ही नहीं हैं, उनके पास सार्थक नाम भी हैं। तकनीकी रूप से यह उपर्युक्त जैसा ही है, लेकिन अब एक व्यक्ति यह भी समझ जाएगा कि मूल्यों का क्या अर्थ है।

+0

"कुंजी" और "मान" जोड़ना अपर्याप्त (और डुप्लिकेटिव) है, खासकर यदि आपको वेब पर इस समूह का गुच्छा पारित करने की आवश्यकता है। ओबीजे को संशोधित करना यहां कुल जेसन ब्लॉब के वजन को दोगुना करने से भी अधिक है। ऑब्जेक्ट में कुंजी के लिए सरल "यहां ठीक काम करता है। – ekeyser

+0

JSON स्ट्रिंग का वजन एक अलग मामला है। ऑब्जेक्ट्स जिनमें अनुमानित रूप है और संरचना और डेटा को मिश्रित नहीं करते हैं वे कोड में काम करने के लिए * रास्ता * आसान होते हैं। '{नाइकी: 50} 'छोटा हो सकता है, लेकिन इसमें कोई * अर्थपूर्ण * मूल्य नहीं है। इसके अतिरिक्त 'इन .. इन' ऑब्जेक्ट करने का एक सुरक्षित तरीका नहीं है और आपको इसका उपयोग नहीं करना चाहिए। – Tomalak

18
$.each(top_brands, function() { 
    var key = Object.keys(this)[0]; 
    var value = this[key]; 
    brand_options.append($("<option />").val(key).text(key + " " + value)); 
}); 
8
$.each(top_brands, function(index, el) { 
    for (var key in el) { 
    if (el.hasOwnProperty(key)) { 
     brand_options.append($("<option />").val(key).text(key+ " " + el[key])); 
    } 
    } 
}); 

लेकिन अगर आपके डेटा संरचना var top_brands = {'Adidas': 100, 'Nike': 50}; है, तो बात और अधिक सरल हो जाएगा।

for (var key in top_brands) { 
    if (top_brands.hasOwnProperty(key)) { 
     brand_options.append($("<option />").val(key).text(key+ " " + el[key])); 
    } 
} 

या jQuery प्रत्येक का उपयोग करें:

$.each(top_brands, function(key, value) { 
    brand_options.append($("<option />").val(key).text(key + " " + value)); 
}); 
+0

'var key' कृपया। –

+0

@ फ़ेलिक्सक्लिंग हाँ, निश्चित। – xdazz

11

इस सब वस्तु स्टोर करने के लिए जा रहा है, तो सबसे अच्छा शाब्दिक

var top_brands = { 
    'Adidas' : 100, 
    'Nike' : 50 
    }; 

होगा तो आपको केवल एक for...in है पाश।

for (var key in top_brands){ 
    console.log(key, top_brands[key]); 
    } 
0
Object.keys(top_brands).forEach(function(key) { 
    var value = top_brands[key]; 
    // use "key" and "value" here... 
}); 

Btw, ध्यान दें कि Object.keys और forEach प्राचीन ब्राउज़र में उपलब्ध नहीं हैं, लेकिन आप कुछ polyfill वैसे भी उपयोग करना चाहिए।

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