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);