What is my mistake?

Tell us what’s happening:

  **Your code so far**

// Setup
var collection = {
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(object, id, prop, value) {
console.log(id);
console.log(prop);
console.log(value);

if (prop !== "tracks" && value !== "") {
  prop = value;

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

return object;
}

updateRecords(collection, 5439, 'artist', 'ABBA');
  **Your browser information:**

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36.

Challenge: Record Collection

Link to the challenge:

The fundamental mistake is, that you are not updating or even accessing the object.
E.g. you are creating the variable tracks but you should create tracks as a property of the object from the function input.

Another thing that kind of results from this misunderstanding is, that you check if the id hasOwnProperty,… and so on, when in fact you should access the key of the object with the name of the value stored in the id variable.

Apart from these two things, everything else is perfect.

Note: When using something like object.id you are looking for a key with the name of ‘id’. If you want to instead look for a key with the value of the variable, use bracket notation.