Is this acceptable Javascript? - Record Collection

Tell us what’s happening:
I solved the record collection problem, but my code is very different than the solution provided by freecodecamp.

Does my solution make sense, and is it acceptable 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"
 }
};

// Only change code below this line
function updateRecords(id, prop, value) {
if (value === "" && prop === "tracks") {
 delete collection[id][prop];
}
else if (value !== "" && prop !== "tracks") {
collection[id][prop] = value;
}
else if (value !== "" && prop === "tracks") {
 collection[id][prop] = collection[id][prop] || [];
 collection[id][prop].push(value);
}
else if (value === "" && prop !== "tracks") {
 delete collection[id][prop];
 }
 return collection; 
}
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/84.0.4147.89 Safari/537.36.

Challenge: Record Collection

Link to the challenge:

yes it is valid javascript

your solution works, now you could make it better: for example you have two conditions that do the exact same thing, maybe think of merging them?

@ieahleen Thank you for the advice. It really helped! I managed to simplify the function. Does removing bolded part also work because we’ve already established a that value === “” will be deleted?

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

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

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

  return collection;
}

yes, you can remove that too as if value !== "" is true then that check would be reached anyway as the statement above is fase