मैंने यह निर्धारित करने के लिए एक कार्य किया है कि यह एक शब्दकोश है या नहीं।
exports.is_dictionary = function (obj) {
if(!obj) return false;
if(Array.isArray(obj)) return false;
if(obj.constructor != Object) return false;
return true;
};
// return true
test.equal(nsa_utils.is_dictionary({}), true);
test.equal(nsa_utils.is_dictionary({abc:123, def:456}), true);
// returns false
test.equal(nsa_utils.is_dictionary([]), false);
test.equal(nsa_utils.is_dictionary([123, 456]), false);
test.equal(nsa_utils.is_dictionary(null), false);
test.equal(nsa_utils.is_dictionary(NaN), false);
test.equal(nsa_utils.is_dictionary('hello'), false);
test.equal(nsa_utils.is_dictionary(0), false);
test.equal(nsa_utils.is_dictionary(123), false);
इसमें विभिन्न पृष्ठों के बीच संघर्ष की संभावना है, क्योंकि दोनों के पास 'ऐरे' और 'ऑब्जेक्ट' कन्स्ट्रक्टर फ़ंक्शंस के अलग-अलग उदाहरण हैं, जो बराबर की तुलना नहीं करेंगे। मुझे पूरा यकीन नहीं है कि एक उदाहरण कैसे उत्पन्न किया जाए जो इसे प्रदर्शित करता है, लेकिन मैंने इसे कहीं पढ़ा है। – ripper234
@ ripper234 समस्या स्वयं को एक बहु 'विंडो' वातावरण में प्रकट करेगी। Array.isArray metioning के लिए – alex
+1। Borwser समर्थन के लिए इस लिंक को देखें: http://kangax.github.io/compat-table/es5/#Array.isArray – SKuijers