Record Collection. half solved with half missing

This is a fairly good question however It’s hard to discern what you are doing incorrect. I would like some help on where I need to focus on as I am not sure what I am missing.


// 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) {
   collection[id] = {};
 collection[id][prop] = value;
 if (collection[id][prop] == ""){
   delete collection[id][prop];
 } else if ( collection[id][prop] == "tracks" && collection[id][props] == ""){
   collection[id][props].push(value);
 }  else if ( !collection[id].hasOwnProperty("tracks") && prop == "tracks" ){
   collection[id][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 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36.

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

collection[id] = {};
collection[id][prop] = value;

You are always setting that album to {} regardless of what was there beforehand, and you are always setting a property to value regardless of what it is.

Like updateRecords(5439, "artist", "ABBA");. The item in the collection with that id goes from

"5439": {
      "album": "ABBA Gold"
    }

To

"5439": {}

To

"5439": {
      "artist": "ABBA"
    }

You’ve just wiped out what was there and added something else


The first condition actually works: if the value is an empty string, delete.
The second condition can never work (true if the prop is tracks and the value is an empty string, at which point you say push a[n empty] string into a[n empty] string)
The third condition cannot ever work, and is wrong: it is saying that if the collection does not have a property tracks but tracks is the prop argument given to the function, set props to be an empty array, regardless of the value. But if the prop argument was tracks, you’ve already set that on the collection, so the collection cannot ever not have a tracks property in that case