Record Collection \\unable to add property

Tell us what’s happening:
Hi
#1
I can’t complete updateRecords(5439, “tracks”, “Take a Chance on Me”), while all other tests are done. I keep have problem with this line “collection[id][prop].push(value);”

#2
Is there any reason this section requires using bracket notation instead of dot? A lot of sites said they are the same. (except when the property has space in it, which is not the case in this section).

Thank you so much.

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

// Alter values below to test your code
updateRecords(1245, "Tracks", "Addicted to Love");

Your browser information:

User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1.1 Safari/605.1.15.

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

The second else if is never going to execute as the previous condition will evaluate as true when the second if else will also be true, and with if/else if/else chains the first condition evaluated to true is the one that is executed

Plus: using bracket or dot notation is the same (bar limitations like spaces and such) if you are using the exact name of the property
You are using a variable in this case, and dot notation uses exactly what you put there, so you need to use bracket notation for variables

Thank you so much!!!