Array Length returns 0

Only numeric indices affect the .length of an Array.

Other named properties are allowed, but they aren't the typical use for an Array object. By using "", you're creating a non-numeric property on the object. You can access it like this:

errors[""];

But you can't get to it with the typical Array methods.


For named properties, you'd typically use an Object instead. Either way, you can get a count of the number of own, enumerable properties (including numeric indices) by using Object.keys().

Object.keys(errors).length;

Because that is not how you add an item since Arrays only accept numeric keys. You do it like this:

errors.push("blah");  /*or*/  errors[0] = "blah";

//Now if you check the length:
errors.length;  //1

Also, if you are using it as an Object, '' isn't a valid name either.

*Correction: Looks like you can use "" (empty string) as a key.


As you used string key instead of int, JavaScript will consider your array as an object storing key/value pairs.

as @cookiemonster mentioned you can get length using Object.keys(errors).length;

Also, you may consider using JavaScript ES6 Map.

var errormap = new Map();
errormap.set('err101', 'Description for error 101');
errormap.set('err102', 'Description for error 102');

To get the description of error description based on error key:

console.log(errormap.get('err101'));

You can get the length of the Map object by simply write:

console.log(errormap.size);