dgvirtual 0 Posted August 19, 2020 Report Share Posted August 19, 2020 I was fiddling with „Accessing Arrays with Named Indexes“ section examples of the Javascript tutorial and run into a situation I cannot explain. In short, I create an array 'person', then add elements to the array by index, and then add a third element by name. According to the tutorial, this should convert the array to an object (see here: https://www.w3schools.com/js/js_mistakes.asp) . Instead, after this I can access the variable 'person' as both an array (with two elements) and an object (or rather, a person.age property of the object). typeof 'person' reports: object. var person = []; person[0] = "John"; person[1] = "Doe"; person["age"] = 46; Here is a link to the full test: https://www.w3schools.com/code/tryit.asp?filename=GHWE7BWHX1GH Could someone explain what is happening here? Quote Link to post Share on other sites
Funce 42 Posted August 24, 2020 Report Share Posted August 24, 2020 3 things to answer your questions Arrays strictly only have numerical indexes. Adding a string index converts the array to a generic object. You can access an object's properties through square bracket [] method, just like an array. Quote Link to post Share on other sites
dgvirtual 0 Posted August 31, 2020 Author Report Share Posted August 31, 2020 OK, thank you, I see that adding this code: const entries = Object.entries(person) document.getElementById("demo3").innerHTML = "entries: " + entries; to my post results in printing all the object properties and values on the screen. The only thing that I cannot understand is why the `person.length` reports 2 when the length of the object is actually 3 (2 does not change if I comment out the line that ads the third property and converts the array to an object). Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.