Record Collection works but doesn't pass test in FFC

Hi so im pretty stumped, ive been trying to fix this for a few hours now and can’t work it out. I have tried running the code in another sites testing software and it works fine. However, on freeCodeCamp the test “After updateRecords(5439, “tracks”, “Take a Chance on Me”), tracks should have “Take a Chance on Me” as the last element.” wont tick off. Is it wrong or right? i’m really confused.

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" && collection[id].hasOwnProperty("tracks") === false){
  
  collection[id].tracks = value;

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

} else if (value === ""){
  
  delete collection[id][prop];

}

  return collection;
}

updateRecords("5439", "tracks", "Take a Chance on Me")

I’ve edited your post for readability. When you enter a code block into the forum, precede it with a line of three backticks and follow it with a line of three backticks to make easier to read. See this post to find the backtick on your keyboard. The “preformatted text” tool in the editor (</>) will also add backticks around text.

markdown_Forums

The problem is the following section of your code:

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

Remember tracks needs to be an array. When you write collection[id].tracks = value, you are just assigning a string to tracks instead of an array with one element (the value).

thanks, I will do that in the future.

ahh, i see. would it be:
collection[id].tracks = [value]; ?

Test it out and see. There are multiple ways of accomplishing this task.

1 Like

yes it worked! your the best. thanks!