Reputation: 2592
I currently have a Javascript object that looks like this:
Object {0: 8, 1: 9, 2: 10}
I am trying to get the number of individual items in the object (i.e. 3) but can't figure out how to do so. Since the object isn't an array, I can't just call .length()
. I tried huntsList[2].toString().split('.').length
to split the items at the commas and count them in this way but it returns 1, since it converts the entire object to a single string that looks like this: ["[object Object]"]
.
Any suggestions for how I can accomplish this are appreciated.
Upvotes: 15
Views: 44643
Reputation: 4703
1: ES5.1 solution use Object.keys - returns an array of a given object's own enumerable properties
var obj = {
0: 8,
1: 9,
2: 10
}
console.log(Object.keys(obj).length)
2: Pre-ES5 Solution: use for..in and hasOwn
var obj = {
0: 8,
1: 9,
2: 10
};
var propsLength = 0;
for (prop in obj) {
if (obj.hasOwnProperty(prop)) {
propsLength = propsLength + 1;
}
}
console.log(propsLength);
3: Library Solution: Use lodash/underscore Convert it to an array, and query its length, if you need a pure js solution, we can look into how toArray works.
console.log(_.toArray({
0: 8,
1: 9,
2: 10
}).length)
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore.js"></script>
Upvotes: 5
Reputation: 191
var obj = {0: 8, 1: 9, 2: 10};
alert(Object.keys(obj).length);
with this code, try to alert the length of you object mate.!
Upvotes: 1
Reputation: 4568
You can use Object.keys()
. It returns an array of the keys of an object.
var myObject = {0: 8, 1: 9, 2: 10};
console.log(Object.keys(myObject).length)
Upvotes: 7