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"
}
]
}
};
That’s because categoryData is not an Array – it’s an Object. And while some JS objects (
arguments, for example) supportlengthproperty, those created with object literal notation do not.You can count your object’s length by yourself, with this:
This can be done even in a more simple way, if your target environment supports (or has it shimmed) the
Object.keysmethod:… and that’s exactly how it’s done in Underscore.js library method: