Because you can’t use the dot notation with numbers and usually want to use a binding that holds the index anyway, you have to use the bracket notation to get at them. code example
Example: javascript array of objects access properties
// The user object will be the test data for the notes taken below,
// ALL NOTE ARE AND INFO CAN BE FOUND AT HACKERNOON!
// THIS IS NOT MY WORK, I AM ONLY POSTING IT TO GREPPER FOR EASE OF USE OF FINDING THIS
// MATERIAL LATER IF NEED BE!
// With that said enjoy the notes :D
const user = {
id: 101,
email: '[email protected]',
personalInfo: {
name: 'Jack',
address: {
line1: 'westwish st',
line2: 'washmasher',
city: 'wallas',
state: 'WX'
}
}
}
// To access the name of our user we will write:
const name = user.personalInfo.name;
const userCity = user.personalInfo.address.city;
// This is the easy and straight-forward approach
// But for some reason, if our user's personal info is not available, the object structure
// will be like this:
const user = {
id: 101,
email: '[email protected]'
}
// Now if you try to access the name, you will be thrown "Cannot read property 'name'
// of undefined"
const name = user.personalInfo.name; // Cannot read property 'name' of undefined
//This is because we are trying to access the name key from an object that does not exist
// The usual way how most devs deal with this scenario is
const name = user && user.personalInfo ? user.personalInfo.name : null;
// Undefined error will NOT be thrown as we check for existence before access
// This is okay if your nested structure is simple, but if you have your data nested
// 5 or 6 levels deep, then your code will look really messy like this:
let city;
if (
data && data.user && data.user.personalInfo &&
data.user.personalInfo.addressDetails &&
data.user.personalInfo.addressDetails.primaryAddress
) {
city = data.user.personalInfo.addressDetails.primaryAddress;
}
// for more information please visit:
// https://hackernoon.com/accessing-nested-objects-in-javascript-f02f1bd6387f