Record Collection - not understanding why the code logic fail

Tell us what’s happening:

// running tests

After updateRecords(5439, “artist”, “ABBA”), artist should be “ABBA”
Cannot read property ‘pop’ of undefined
After updateRecords(2548, “artist”, “”), artist should not be set
After updateRecords(1245, “tracks”, “Addicted to Love”), tracks should have “Addicted to Love” as the last element.
After updateRecords(2548, “tracks”, “”), tracks should not be set
After updateRecords(1245, “album”, “Riptide”), album should be “Riptide”
// tests completed

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 is "tracks" but the album doesn't have a "tracks" property, create an empty    array before adding the new value to the album's corresponding property.
  if (collection[id][prop] === "tracks" && "album" !=="tracks") {
    collection[id][prop] = [];
    collection[id][prop] = [value];

  }

  //if prop not tracks and value is empty update or set the value for that record
  else if (collection[id][prop] !== "tracks" && [value] === "") {
         collection[id][prop] = [value];
  }
  
  //If prop is "tracks" and value isn't empty (""), push the value onto the end of the album's existing tracks array.
  if (collection[id][prop] === "tracks" && [value] !== "") {
    if (collecion[id][prop] === "album") {
      collection[id][prop].push(value);
    }
  }
    
  //If value is empty (""), delete the given prop property from the album.
   else if (collection[id][value] === "") {
    delete collection[id][prop];
  }
  
  return collection;
}

// Alter values below to test your code
updateRecords(5439, "artist", "ABBA");

Your browser information:

User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36.

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

Try console.log(collection[id][prop]) to check what that is, it can’t be equal to "tracks". This is not the way to check prop, prop is not the same as collection[id][prop]

Also the second part will always be true, as two different string will always be not equal to each other.

You have similar issues in all your statements.