यह जांचने का सबसे सरल तरीका है कि क्या CoffeeScript का उपयोग करके ऑब्जेक्ट मौजूद है


110

CoffeeScript में, यह जांचने का सबसे सरल तरीका है कि क्या किसी ऑब्जेक्ट में कोई कुंजी मौजूद है?

जवाबों:


182
key of obj

यह जावास्क्रिप्ट के लिए संकलित है key in obj। ( ofकुंजियों का संदर्भ देते समय, और inसरणी मानों का जिक्र करते समय कॉफीस्क्रिप्ट का उपयोग होता है : val in arrयह जांच करेगा कि क्या अंदर valहै arr)।

यदि आप ऑब्जेक्ट के प्रोटोटाइप को अनदेखा करना चाहते हैं तो thejh का उत्तर सही है। यदि आप nullया undefinedमान के साथ कुंजियों को अनदेखा करना चाहते हैं तो जिमी का उत्तर सही है ।


2
सबसे अधिक संभावना है कि own key of objकाम करता है, भी, विज्ञापन परीक्षण के लिए .hasOwnProperty()। "सबसे अधिक संभावना" मुझ से आता है कोशिश नहीं की है, लेकिन यह वाक्य रचना समझ में काम कर रहा है।
उड़ान भेड़

2
@flyingsheep नहीं, यह केवल समझ में आता है। इसे आज़माएँ: coffeescript.org/#try:own%20key%20of%20obj
ट्रेवर बर्नहैम

आह, ठीक है :own = (prop, obj) -> Object::hasOwnProperty.call obj, prop
फ्लाइंग भेड़

36

'?' अस्तित्व के लिए ऑपरेटर की जाँच:

if obj?
    # object is not undefined or null

if obj.key?
    # obj.key is not undefined or null

# call function if it exists
obj.funcKey?()

# chain existence checks, returns undefined if failure at any level
grandChildVal = obj.key?.childKey?.grandChildKey

# chain existence checks with function, returns undefined if failure at any level
grandChildVal = obj.key?.childKey?().grandChildKey

16
यह विफल रहता है यदि कुंजी है, लेकिन का एक मूल्य है null
म्यू

इस मामले में जहां कोई मौजूदा कुंजी के बारे में परवाह नहीं करता है, लेकिन अशक्त है, तो obj.key?संभवतः सबसे संक्षिप्त है।
एंड्रयू माओ

21
obj.hasOwnProperty(name)

(विरासत में मिली संपत्ति की अनदेखी)


मुझे यह प्रतिक्रिया पसंद है क्योंकि key of objअगर एक स्ट्रिंग या संख्या है तो एक त्रुटि होगी। Cannot use 'in' operator to search। इस मामले में यदि ऑब्जेक्ट अपरिभाषित नहीं है और शून्य नहीं है तो यह काम करेगा।
jqualls

यह विफल हो जाता है जहां ऑब्जेक्ट के प्रोटोटाइप से मूल्य है।
ब्रायन एम। हंट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.