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


88

मेरे पास निम्नलिखित जावास्क्रिप्ट वस्तु है:

var obj = {
    "key1" : val,
    "key2" : val,
    "key3" : val
}

क्या यह जाँचने का कोई तरीका है कि क्या कुंजी इसी प्रकार मौजूद है?

testArray = jQuery.inArray("key1", obj);

काम नहीं करता।

क्या मुझे इस तरह obj के माध्यम से पुनरावृत्त करना होगा?

jQuery.each(obj, function(key,val)){}

4
js - ऑब्जेक्ट शाब्दिक :) (jQuery की वस्तु नहीं)
funerr

सच;), दिखाता है कि मेरे पास js पृष्ठभूमि नहीं है - शुरुआत से ही jQuery पुस्तकालय के साथ शुरू हुआ, और मुझे विश्वास है कि मुझे मूल बातें सीखने की जरूरत है ...
user2065483

obj.has("key1")काम करेगा अगर आप ES6 का उपयोग कर रहे हैं।
डियाब्लो


1
@Diablo मुझे लगता है कि आप obj.hasOwnProperty("key1")बस के बजाय कहने की कोशिश कर रहे हैं has?
अमीनू कानो

जवाबों:


173

inऑपरेटर का उपयोग करें :

testArray = 'key1' in obj;

सिडेनोट: आपको वहां क्या मिला, वास्तव में कोई jQuery ऑब्जेक्ट नहीं है, लेकिन सिर्फ एक सादे जावास्क्रिप्ट ऑब्जेक्ट है।


4
क्या हम inइस तरह की जाँच नहीं कर सकते ?
सागरपंचाल

5
@ सागरपंचल आपका क्या मतलब है? कुछ पसंद है testArray = !( 'key1' in obj);?
सिरको

49

यह एक jQuery वस्तु नहीं है, यह सिर्फ एक वस्तु है।

कुंजी की जाँच करने के लिए आप hasOwnProperty विधि का उपयोग कर सकते हैं:

if (obj.hasOwnProperty("key1")) {
  ...
}

आपको इसका उपयोग नहीं करना चाहिए। इसे धीमा बताया जाता है। सबसे अच्छा तरीका है कि आप ऑब्जेक्ट में 'की' का इस्तेमाल करें
हननाद रहमान

@hannadrehman क्या आप मुझे डॉक / लेख का संदर्भ दे सकते हैं जहां इसका उल्लेख है? :)
नबिन

1
@Fan_of_Martijn_Pieters मैं सख्त ESlint नियम का पालन करता हूं। यह वहाँ नियमों में से एक के रूप में उल्लिखित है। eslint.org/docs/rules/no-prototype-builtins
hannad rehman

@hannadrehman की-इन-ऑब्जेक्ट का उपयोग न करें, यह सादा गलत हो सकता है, यह सबसे अच्छा तरीका है।

पदावनत क्योंकि यह शून्य मान के साथ कुंजियों का पता लगाने पर काम नहीं करता है। उदाहरण के लिए, यदि obj ["key1"] == null का मान है (तो Key1 obj में मौजूद है और इसका मान शून्य है), यह एक गलत परिणाम देगा कि Key1 obj में नहीं है।
user1258361

7
var obj = {
    "key1" : "k1",
    "key2" : "k2",
    "key3" : "k3"
};

if ("key1" in obj)
    console.log("has key1 in obj");

================================================== =======================

एक अन्य कुंजी के एक बच्चे की कुंजी का उपयोग करने के लिए

var obj = {
    "key1": "k1",
    "key2": "k2",
    "key3": "k3",
    "key4": {
        "keyF": "kf"
    }
};

if ("keyF" in obj.key4)
    console.log("has keyF in obj");

1
या यदि कोई कुंजी 1 नहीं है ..if (!("key1" in obj)) { console.log("no key1 in obj"); }
हास्टिग ज़ुसमेनस्टेलन

3

उपरोक्त उत्तर अच्छे हैं। लेकिन यह अच्छा भी है और उपयोगी भी।

!obj['your_key']  // if 'your_key' not in obj the result --> true

यदि स्टेटमेंट्स में कोड विशेष की लघु शैली के लिए यह अच्छा है:

if (!obj['your_key']){
    // if 'your_key' not exist in obj
    console.log('key not in obj');
} else {
    // if 'your_key' exist in obj
    console.log('key exist in obj');
}

नोट: यदि आपकी कुंजी अशक्त या "आपका" के बराबर है यदि "कथन" गलत होगा।

obj = {'a': '', 'b': null, 'd': 'value'}
!obj['a']    // result ---> true
!obj['b']    // result ---> true
!obj['c']    // result ---> true
!obj['d']    // result ---> false

तो, जाँच के लिए सबसे अच्छा तरीका अगर एक कुंजी मौजूद है एक obj में:'a' in obj


1

आप यह कोशिश कर सकते हैं:

const data = {
  name : "Test",
  value: 12
}

if("name" in data){
  //Found
}
else {
  //Not found
}


0

सबसे सरल तरीका है

const obj = {
  a: 'value of a',
  b: 'value of b',
  c: 'value of c'
};

if(obj.a){
  console.log(obj.a);
}else{
  console.log('obj.a does not exist');
}


अगर aया तो एक खाली स्ट्रिंग है, शून्य या अशक्त है, यह अभी भी 'obj.a अस्तित्व में नहीं है' लौटेगा, भले ही कुंजी aमौजूद नहीं है।
ट्विस्टेड व्हिस्पर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.