Record Collection problem - help appreciated

Hello all. I know this is a challenge a lot of people come unstuck on. Hopefully you can point out what I’ve messed up.

All of the tests have passed except for this one…

After updateRecords(5439, "tracks", "Take a Chance on Me") , tracks should have "Take a Chance on Me" as the last element.

Here is my rough code…

// 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;
 } else if (prop == "tracks" && value != "") {
   collection[id][prop].push(value);
 } else if (value == "") {
   delete collection[id][prop];
 }
  
  return collection;
}

// Alter values below to test your code
updateRecords(5439, "artist", "ABBA");

I thought my first else if statement would have worked for this outstanding test. In my mind that statement should take the track title and push it to the end of the tracks array.

Any help would be appreciated. Many thanks.

collection[id][prop].push(value);

In the test that you are failing, the collection[id] does not have a prop value, that means that collection[id][prop]is undefined. You cannot push to undefined. You can only push to an array.

Brilliant. That makes perfect sense.Thank you so much!

I’m glad I could help. Happy coding!

1 Like