freeCodeCamp: Record Collection (Challenge)

Nothing is wrong with my code. I don’t know why every time updateRecords(2468, “tracks”, “Free”) is ran there is a problem. The problem seems to be that this if(!collection.hasOwnProperty("tracks")) { collection[id][prop] = [] ; collection[id][prop].push(value) ; } is ran even though the property exists. How can I fix this? This is the only thing I need to fix to pass the challenge.

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


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

  return collection;
}

// Alter values below to test your code
updateRecords(2468, "tracks", "Free") ;

I’ll give you a hint. collection has the properties of all the id’s, collection.hasOwnProperty will only ever be true for an id.

thank you m-michelini . my code finally works because of you!

1 Like