Record Collection Error : "Cannot read property "push" of undefined"

Hi people! I’m stuck on a particular piece of code in the “Record Collection” exercise of the “Basic JavaScript” section in the “JavaScript Algorithms and Data Structures Certification” part of the camp.

My problem is that when I run the code an error stating, "Cannot read property “push of undefined” shows up. Logically, I cannot find any errors in my code (probably due to my low knowledge of the logical flow through a JS program). I would be really thankful if someone could help me with it.

Thanking you in advance, kind stranger.

I’m sharing my code below.


// 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": [ 
        "1999", 
        "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;
 }

 if(prop=="tracks"&&collection[id][prop]=="")
 {
   collection[id][prop]=[value];
 }

 if(prop=="tracks"&&collection[id][prop]!="")
 {
   collection[id]["tracks"].push(value);
 } 

 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/76.0.3809.100 Safari/537.36.

Link to the challenge:
https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript/record-collection

 if(prop=="tracks"&&collection[id][prop]!="")
 {
   collection[id]["tracks"].push(value);
 } 

If collection[id] does not have the property “tracks”, then collection[id]["tracks"] is undefined. You cannot use the push method on an undefined value.

1 Like