How to add or replace value with parameters?

Tell us what’s happening:
it asks me to add (or replace) a value depending on the parameters. my current way always returns an error. how would i do this without an error returning?

  **Your code so far**
// 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
console.log(updateRecords(recordCollection, 5439, 'artist', 'ABBA'));
function updateRecords(records, id, prop, value) {
if (record.id) {

}
return records;
}

console.log(updateRecords(recordCollection, 5439, 'artist', 'ABBA'));
  **Your browser information:**

User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:101.0) Gecko/20100101 Firefox/101.0

Challenge: Record Collection

Link to the challenge:

This looks very preliminary?

You cannot use dot notation with a variable that holds a property name.

that isnt a variable, it is a parameter

A parameter is just a type of variable. If you want to be super duper pedantic, a variable is created to hold the value of the parameter passed into the function. My comment still applies… You can’t use dot notation here.

As said a parameter is a variable, you can tell by how it works. When you call the function you pass it an argument (value) and it gets assigned to the parameter (variable).

For dot notation to work when accessing a property, it has to exist on the object. There is no id property on the object. You can not read the value of the property id because it doesn’t exist on the object.

The variable (parameter) has to be evaluated (read), and its value used, as the property name (key). So whatever the parameter contains (the value passed as an argument) must be inside brackets.

someObject[someVariable]
1 Like