Don´t understand the use of brackets alongside, [id] [prop]

Hi Campers, thanks in Advance for your help.

I don´t understand the use of these brackets alongside, [id] and [prop], in:
{records[id][prop] = value;}

Apparently that would assign a “value” to a “property” nested in a specific “Id”, am I right?

If it was nested, I expected it to be:
{recordCollection.id[“prop”]}
as in a previous exercise:
ourStorage.cabinet[“top drawer”].folder2;

My code:

// Setup
const recordCollection = {
  2548: {
    albumTitle: 'Slippery When Wet',
    artist: 'Bon Jovi',
    tracks: ['Let It Rock', 'You Give Love a Bad Name']
  },
  2468: {
    albumTitle: '1999',
    artist: 'Prince',
    tracks: ['1999', 'Little Red Corvette']
  },
  1245: {
    artist: 'Robert Palmer',
    tracks: []
  },
  5439: {
    albumTitle: 'ABBA Gold'
  }
};

// Only change code below this line
function updateRecords(records, id, prop, value) {

if (prop !== "tracks" && value !== "")
{records[id][prop] = value;}
else if (prop === "tracks" && 
records[id].hasOwnProperty("tracks") === false)
{records[id][prop] = [value];}
else if (prop === "tracks" && value !== "")
{records[id][prop].push(value);}
else if (value === "")
{delete records[id][prop];}
return records;}

updateRecords(recordCollection, 5439, "artist", "ABBA");
updateRecords(recordCollection, 5439, "tracks", "Take a Chance on Me");
updateRecords(recordCollection, 2548, "artist", "");
updateRecords(recordCollection, 1245, "tracks", "Addicted to Love");
updateRecords(recordCollection, 2468, "tracks", "Free");
updateRecords(recordCollection, 2548, "tracks", "");
updateRecords(recordCollection, 1245, "albumTitle", "Riptide");

I’ve edited your post for readability. When you enter a code block into a forum post, please precede it with a separate line of three backticks and follow it with a separate line of three backticks to make it easier to read.

You can also use the “preformatted text” tool in the editor (</>) to add backticks around text.

See this post to find the backtick on your keyboard.
Note: Backticks (`) are not single quotes (’).

Correct. But you are forgetting the past exercise where you use variables to access an object with bracket notation.

Using dot and bracket notation can look very similar, but functionally are very different when it comes to variables. You can only use bracket notation when using variables, using variables with dot notation will not work. When you say ['prop'] it is looking for the property literally named prop, not using the value of the variable that is named prop like [prop].

1 Like

A post was split to a new topic: Record Collection ChrisH1

Thanks [Lego_My_Eggo],

I thought that (prop) was an argument inside a function.

I didn´t consider (prop) to be a variable.

Also, the videos have helped me a lot to understand certain ítems, unfortunately there is no link for the explanatory video in this case.

I might be a bit confused with all the terms.

A function argument is just a variable

I see.
I though that variables were always defined by
var,
let
or
const

It wasn´t clear to me that the function arguments are variables as well, so I have to use bracket notation.

Thanks a lot.