Could anyone help explain why length is returning 0? Thank you VERY much in advance!
var errors = [];
errors[\'\'] = \"Monday Morning slot already taken. Wou
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);
Your Array needs a numeric input, you're currently using an empty string as an Index, which is invalid.
You can either specify an index, initialise the Array with your given elements, or push that item to the Array:
// Option 1: Specify index
var errors = [];
errors[0] = 'Monday Morning slot already taken. Would you like to replace it?';
// Options 2: Initialise the Array with values
var errors = ['Monday Morning slot already taken. Would you like to replace it?'];
// Option 3: Push the item to Array
var errors = [];
var myString = 'Monday Morning slot already taken. Would you like to replace it?';
errors.push(myString);