Record Collection-Cannot read property 'push' of undefined

Tell us what’s happening:

Your code so far

// Setup
var collection = {
    "2548": {
      "album": "Slippery When Wet",
      "artist": "Bon Jovi",
      "tracks": [ 
        "Let It Rock", 
        "You Give Love a Bad Name" 
    "2468": {
      "album": "1999",
      "artist": "Prince",
      "tracks": [ 
        "Little Red Corvette" 
    "1245": {
      "artist": "Robert Palmer",
      "tracks": [ ]
    "5439": {
      "album": "ABBA Gold"
// Keep a copy of the collection for tests
var collectionCopy = JSON.parse(JSON.stringify(collection));

// Only change code below this line
function updateRecords(id, prop, value) {
  if(prop != "tracks" && value !== "" ){
    collection[id][prop] = value;
  } else if (prop ==="tracks" && value!== ""){
  } else if (value == ""){
    delete collection[id][prop];
  return collection;

// Alter values below to test your code
updateRecords(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/73.0.3683.86 Safari/537.36.

Link to the challenge:

I can’t pass the second requirement. it said “Cannot read property ‘push’ of undefined”

1 Like

It’s because currently ‘5439’ doesn’t have any properties called tracks. You are trying to push a value to non-existing property.

What you can do is check to see if the corresponding id has the property called tracks. If it does, you can push like you already do if no make a new array and add the value to that array.

Cheers :slight_smile:


hint: remember learning that obj.hasOwnProperty(prop) will return true or false depending on if that object has that property


Got it. Thank you. :slight_smile:

1 Like

I see. Thank you for helping :slight_smile:

1 Like