2012-03-11 3 views
5

क्या एक jQuery तत्व ऑब्जेक्ट को सरणी/ऑब्जेक्ट कुंजी के रूप में उपयोग करना संभव है?jQuery तत्व ऑब्जेक्ट का उपयोग सरणी कुंजी के रूप में करें?

उदाहरण:

var el = jQuery(this); 
var test = {}; 
test[el] = "something strange"; 

कर एक:

jQuery.each(test, function(k,v){ 
    console.log(k); 
}); 

सिर्फ रिपोर्ट [वस्तु वस्तु]

वहाँ एक कहते हैं कि मैं वास्तव में k फिर से इस्तेमाल कर सकते हैं मूल jQuery के रूप में है तत्व वस्तु?

+0

आखिरकार आप क्या हासिल करने की उम्मीद कर रहे हैं? चूंकि 'el' एक ऑब्जेक्ट है, यदि आप उस ऑब्जेक्ट के साथ "कुछ अजीब" को जोड़ना चाहते हैं, तो ऑब्जेक्ट में केवल एक संपत्ति क्यों न जोड़ें? –

+0

@amnotiam यह एक oversimplified उदाहरण था। वास्तविक उपयोग यह होगा कि मुझे एल्स की एक सरणी की आवश्यकता है, इसलिए यह उसमें एक संपत्ति जोड़ने के लिए काम नहीं करेगा। –

+0

यदि आपको एल्स की सरणी की आवश्यकता है तो यह नहीं है कि 'var test = []; test.push (एल); // etc'? – nnnnnn

उत्तर

7

नहीं, यह संभव नहीं है।

ईसीएमएस्क्रिप्ट केवल strings वस्तुओं के लिए महत्वपूर्ण मूल्यों के रूप में अनुमति देता है।


क्या आप के बजाय कर सकता है, बजाय एक ही नोड से id value उपयोग करने के लिए है। तो यह

var el = jQuery(this); 
var test = {}; 
test[this.id] = "something strange"; 

निश्चित रूप से नोड को आईडी मान रखने की आवश्यकता हो सकती है।

+0

ठीक है, ठीक है। खैर, मुझे लगता है कि मुझे अपने उद्देश्यों के लिए एक सामान्य आईडी उत्पन्न करना होगा; काफी सरल। –

+0

आईडी तत्व पर "आईडी" विशेषता है या यह कुछ और है? – hfossli

0

जब आप $.each([],function(i,v)){} का उपयोग करते हैं तो मैं सूचकांक और v मान है।

+0

ओपी जानता है कि। सवाल यह है कि इंडेक्स को "ऑब्जेक्ट ऑब्जेक्ट]" के रूप में क्यों रिपोर्ट किया गया है (यह नोट करते हुए कि इस मामले में "इंडेक्स" एक प्रमुख या संपत्ति का नाम है, दिया गया है कि ओपी एक सादे वस्तु के साथ काम कर रहा है, एक सरणी नहीं है), और यह है किसी वस्तु का उपयोग संपत्ति नाम के रूप में करने के लिए जेएस में संभव है। – nnnnnn

0

जैसे ही आप इसे सरणी कुंजी के रूप में असाइन करने का प्रयास करते हैं, आप ऑब्जेक्ट को एक स्ट्रिंग ('[object Object]') में परिवर्तित कर रहे हैं। सरल हैश के लिए, आप क़यास उन्हें एक कुंजी में क्रमानुसार सकता है:

var obj = { foo: 'bar' }, 
    key = JSON.stringify(obj), 
    obj2 = { key: 'something strange' }; 

आम तौर पर है, हालांकि, आप बात इस तरह का से बचने के लिए चाहता हूँ। आप समानांतर सरणियों वस्तुओं और संदेशों से युक्त, बजाय का उपयोग हो सकता है:

var keys = [ {foo: 'bar'}], 
    values = [ 'something strange' ]; 
-1

मैं तुम्हें एक वस्तु को परिभाषित करने के लिए और फिर सरणी के लिए धक्का की जरूरत है।

var obj = {}; 
obj[foo] = 'bar'; 
ary.push(obj); 
संबंधित मुद्दे