Sunday, May 19, 2024
179
rated 0 times [  183] [ 4]  / answers: 1 / hits: 23000  / 12 Years ago, sat, november 24, 2012, 12:00:00

Possible Duplicate:

Array length undefined






I have the following array but whenever I try to find out the length with categoryData.length it gives me only undefined. If I type console.log(categoryData) it gives me all the objects in the array.



var categoryData = {
animals: {
name: Animals,
description: All your favorites from aardvarks to zebras.,
items: [
{
name: Pets
},
{
name: Farm Animals
},
{
name: Wild Animals
}
]
},
colors: {
name: Colors,
description: Fresh colors from the magic rainbow.,
items: [
{
name: Blue
},
{
name: Green
},
{
name: Orange
},
{
name: Purple
},
{
name: Red
},
{
name: Yellow
},
{
name: Violet
}
]
},
vehicles: {
name: Vehicles,
description: Everything from cars to planes.,
items: [
{
name: Cars
},
{
name: Planes
},
{
name: Construction
}
]
}


};


More From » multidimensional-array

 Answers
15

That's because categoryData is not an Array - it's an Object. And while some JS objects (arguments, for example) support length property, those created with object literal notation do not.



You can count your object's length by yourself, with this:



function countProps(obj) {
var count = 0;
for (var p in obj) {
obj.hasOwnProperty(p) && count++;
}
return count;
}


This can be done even in a more simple way, if your target environment supports (or has it shimmed) the Object.keys method:



function sizeObj(obj) {
return Object.keys(obj).length;
}


... and that's exactly how it's done in Underscore.js library method:



_.size = function(obj) {
if (obj == null) return 0;
return (obj.length === +obj.length) ? obj.length : _.keys(obj).length;
};

[#81825] Thursday, November 22, 2012, 12 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
sageallenv

Total Points: 458
Total Questions: 102
Total Answers: 104

Location: Venezuela
Member since Thu, Jul 15, 2021
3 Years ago
;