Record Collection (SOME TEST CASES FAILED)

PLEASE SOMEONE HELP ME OUT; AM HAVING TROUBLING SUBMITTING. THE CODE RUNS JUST FINE WITHOUT ERRORS ON MY BROWSER CONSOLE BUT WHEN I TRY TO SUBMIT, SOME TESTS ARE NOT PASSED EVEN WHEN I TEST THE PARAMETERS GIVEN AND THEY PASS ON THE BROWSER CONSOLE:

ERROR I KEEP SEEING

// running tests
updateRecords(…)[5439].tracks.pop is not a function
updateRecords(…)[1245].tracks.pop is not a function
After updateRecords(2468, “tracks”, “Free”), tracks should have “1999” as the first element.
// tests completed

BELOW IS MY CODE

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

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

The first error is for this updateRecords(5439, "tracks", "Take a Chance on Me"),
you are not creating an array of tracks.

you saw the code; what’s wrong with the syntax?
what is the correct syntax?

Does not matter about the syntax. The test fails.

so how do i correct that?

Make an array instead of setting the value as a string.

For example Array.from() - JavaScript | MDN

Array.from() is quite confusing to me in this case.
I only know how to use it in converting a Set() or Map() to an Array

Don’t worry about Array.from() You don’t need it here and it just confuses things. Besides here:

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

you are creating an array of tracks, (collection[id][prop] = [];) but the problem is the flow of your program through the chain of if/else’s. You never get to this because when this is true, this:

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

is going to be true too. and that is the first condition you encounter.