सबसे मज़बूत उत्तर (यानी जो सबसे कम कीड़े पैदा करते समय आप जो करने की कोशिश कर रहे हैं, उसके इरादे को पकड़ लेता है):
Object.size = function(obj) {
var size = 0, key;
for (key in obj) {
if (obj.hasOwnProperty(key)) size++;
}
return size;
};
// Get the size of an object
var size = Object.size(myObj);
जावास्क्रिप्ट में एक तरह का अधिवेशन है जो आप ऑब्जेक्ट को नहीं जोड़ते हैं। प्रोटोटाइप , क्योंकि यह विभिन्न पुस्तकालयों में गणना को तोड़ सकता है। ऑब्जेक्ट में विधियाँ जोड़ना आमतौर पर सुरक्षित होता है, हालाँकि।
यहां 2016 तक अपडेट और ES5 और उससे आगे की व्यापक तैनाती है। IE9 + और अन्य सभी आधुनिक ES5 + सक्षम ब्राउज़रों के लिए, आप Object.keys()
उपरोक्त कोड का उपयोग कर सकते हैं :
var size = Object.keys(myObj).length;
Object.keys()
अब इसमें बने किसी भी मौजूदा प्रोटोटाइप को संशोधित करने की आवश्यकता नहीं है ।
संपादित करें : ऑब्जेक्ट में प्रतीकात्मक गुण हो सकते हैं जो Object.key विधि के माध्यम से वापस नहीं किए जा सकते हैं। तो उनका उल्लेख किए बिना उत्तर अधूरा होगा।
ऑब्जेक्ट प्रॉपर्टी के लिए अद्वितीय पहचानकर्ता बनाने के लिए भाषा में सिंबल प्रकार जोड़ा गया था। प्रतीक प्रकार का मुख्य लाभ ओवरराइट की रोकथाम है।
Object.keys
या Object.getOwnPropertyNames
प्रतीकात्मक गुणों के लिए काम नहीं करता है। उन्हें वापस करने के लिए आपको उपयोग करने की आवश्यकता है Object.getOwnPropertySymbols
।
var person = {
[Symbol('name')]: 'John Doe',
[Symbol('age')]: 33,
"occupation": "Programmer"
};
const propOwn = Object.getOwnPropertyNames(person);
console.log(propOwn.length); // 1
let propSymb = Object.getOwnPropertySymbols(person);
console.log(propSymb.length); // 2