{"id":35,"date":"2011-12-14T09:30:50","date_gmt":"2011-12-14T09:30:50","guid":{"rendered":"https:\/\/www.peopleperhour.com\/engineering\/?p=35"},"modified":"2012-07-24T17:28:34","modified_gmt":"2012-07-24T17:28:34","slug":"counting-number-of-properties-in-a-js-object","status":"publish","type":"post","link":"https:\/\/www.peopleperhour.com\/engineering\/2011\/12\/14\/counting-number-of-properties-in-a-js-object\/","title":{"rendered":"Counting number of properties in a JS object"},"content":{"rendered":"<p>When there is a JS array, it is easy to count the number of elements. For example:<\/p>\n<p><code><br \/>\nvar arr = [\"hello\", \"world\"];<br \/>\nconsole.log(arr.length);<br \/>\n\/\/ 2<br \/>\n<\/code><\/p>\n<p>However, when you have an object it is a bit more tricky. .length wont work.<br \/>\nOne way is to iterate through the object like this:<br \/>\n<code><br \/>\nvar obj = {<br \/>\nprop1:\"hello\",<br \/>\nprop2:\"world\"<br \/>\n};<br \/>\nvar count = 0;<br \/>\nfor (i in obj) { count++ }; \/\/ count is 2<br \/>\n<\/code><\/p>\n<p>However, if you use jQuery&#8217;s map() function (jQuery 1.6 needed) there is another alternative, a bit more elegant:<br \/>\n<code><br \/>\n$.map(obj, function(value, key) {<br \/>\nreturn key;<br \/>\n}).length;<br \/>\n<\/code><\/p>\n<p>Essentially you get an array with the keys of the object and you use .length on that array.<\/p>\n<p>Note: ECMAScript5 supports Object.keys() but it&#8217;s not supported for pre-IE9 browsers<\/p>\n","protected":false},"excerpt":{"rendered":"<p>When there is a JS array, it is easy to count the number of elements. For example: var arr = [&#8220;hello&#8221;, &#8220;world&#8221;]; console.log(arr.length); \/\/ 2 However, when you have an object it is a bit more tricky. .length wont work. One way is to iterate&#8230;<\/p>\n","protected":false},"author":11,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[9],"tags":[7,6],"class_list":["post-35","post","type-post","status-publish","format-standard","hentry","category-javascript","tag-jquery","tag-js"],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p2CA4w-z","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.peopleperhour.com\/engineering\/wp-json\/wp\/v2\/posts\/35","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.peopleperhour.com\/engineering\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.peopleperhour.com\/engineering\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.peopleperhour.com\/engineering\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.peopleperhour.com\/engineering\/wp-json\/wp\/v2\/comments?post=35"}],"version-history":[{"count":3,"href":"https:\/\/www.peopleperhour.com\/engineering\/wp-json\/wp\/v2\/posts\/35\/revisions"}],"predecessor-version":[{"id":47,"href":"https:\/\/www.peopleperhour.com\/engineering\/wp-json\/wp\/v2\/posts\/35\/revisions\/47"}],"wp:attachment":[{"href":"https:\/\/www.peopleperhour.com\/engineering\/wp-json\/wp\/v2\/media?parent=35"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.peopleperhour.com\/engineering\/wp-json\/wp\/v2\/categories?post=35"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.peopleperhour.com\/engineering\/wp-json\/wp\/v2\/tags?post=35"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}