2015-06-01 6 views
5

के अंदर ऑब्जेक्ट के साथ असाइन करना और मैं इसके बारे में उत्सुक हूं।एक जावास्क्रिप्ट ऑब्जेक्ट को एक सरणी

मान लीजिए कि मैं वस्तुओं की एक सरणी है और मैं 1 वस्तु बनाएँ, ऑब्जेक्ट की श्रेणी का नाम देता है वस्तुओं और वस्तु आइटम

मैं निम्नलिखित कोड का उपयोग करके आइटम के अपने सरणी में किसी विशेष आइटम प्राप्त करना चाहते हैं:

//gets an item base on ID 
function get_item(td){ 
    var item = undefined; 
    $.each(items, function(i, val) { 
     if(val.item_id == td){ 
      item = val; 
     } 
    }); 
    return item; 
} 

get_item() मूल रूप से एक वस्तु की आपूर्ति की आईडी के साथ मिलान किया जाता है।

तो मेरा सवाल यह है। क्या होगा यदि मैंने आइटम के गुणों को बदल दिया है तो क्या यह सरणी के भीतर इसके साथ जुड़े किसी ऑब्जेक्ट के गुणों को भी बदल देगा?

बहुत बहुत धन्यवाद!

+0

आप पोस्ट कर सकते हैं नमूना सरणी वस्तु:

इसके अलावा, आप वस्तु प्राप्त करने के लिए फिल्टर का उपयोग कर सकता है? –

+3

अधिक कोड दिखाएं। अपने "चलो कहें कि मेरे पास है ..." के बाद, उस कोड को दिखाएं जो आपको लगता है कि उस स्थिति के अनुरूप है। –

+0

ठीक है, मैं अपना प्रश्न संपादित करूंगा। – iamjc015

उत्तर

6

क्या होगा यदि मैंने आइटम के गुणों को बदल दिया है तो क्या यह सरणी के भीतर इसके साथ जुड़े किसी ऑब्जेक्ट के गुणों को भी बदल देगा?

हां।

वस्तुओं की प्रतिलिपि नहीं बनाई गई है। इसके बजाय, वस्तुओं के संदर्भ चारों ओर पारित कर रहे हैं। सरल उदाहरण:

var a = []; 
var b = a; 
b.push(1); 
console.log(a); // logs [1] 

कई ऑब्जेक्ट उन्मुख प्रोग्रामिंग भाषाएं इस तरह काम करती हैं।

1

आप अद्यतन कर सकते हैं आप के लिए काम करते हैं:

var data= array(); 
function get_item(propertyValue, propertyName){ 
    var retval; 
    for(var i = 0; i < data.length; i++){ 
     if(data[i][propertyName]==propertyValue){ 
      retval = data[i]; 
      break; 
     } 
    } 
    return retval; 
} 

यह

var item1 = get_item(1,"id"); 
var item2 = get_item("john","name"); 
+0

क्या आप कृपया विस्तार से बता सकते हैं? – iamjc015

+0

यह ओपी के प्रश्न का उत्तर कैसे देता है? * "क्या होगा यदि मैंने आइटम के गुणों को बदल दिया है तो क्या यह सरणी के भीतर इसके साथ जुड़े किसी ऑब्जेक्ट के गुणों को भी बदल देगा?" * –

+0

यह अच्छा है कि मैं संपत्ति नाम को गतिशील रूप से जोड़ सकता हूं। धन्यवाद। – iamjc015

2

सरणी के अंदर वस्तु का मान का उपयोग करें, क्योंकि यह एक संदर्भ है भी बदल जाएगा। यदि आप अधिक जानकारी चाहते हैं तो मैं अत्यधिक Objects and Prototypes पढ़ने की सलाह देता हूं।

यदि आप इसे बदलना नहीं चाहते हैं तो आपको लॉनाश के _.clone() फ़ंक्शन जैसे कुछ का उपयोग करना चाहिए।

function get_item(td){ 
    return items.filter(function(item) { 
     return item.id === td; 
    })[0]; 
} 
+0

यह सहायक है। धन्यवाद। – iamjc015

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