Basic JavaScript - Record Collection

what is wrong with my solution in the second else if why it is wrong if surely asks to update the tracks property and I put it directly using dot notation so why it is not working I even tried bracket notation and it also did not work why do I have to put the prop itself

// Setup
const recordCollection = {
  2548: {
    albumTitle: 'Slippery When Wet',
    artist: 'Bon Jovi',
    tracks: ['Let It Rock', 'You Give Love a Bad Name']
  },
  2468: {
    albumTitle: '1999',
    artist: 'Prince',
    tracks: ['1999', 'Little Red Corvette']
  },
  1245: {
    artist: 'Robert Palmer',
    tracks: []
  },
  5439: {
    albumTitle: 'ABBA Gold'
  }
};

// Only change code below this line
function updateRecords(records, id, prop, value) {
  if (prop != "tracks" && value != "") {
    records[id][prop] = value
  } else if (prop == "tracks" && !records[id].hasOwnProperty("tracks")) {
    records[id].tracks = value
  } else if (prop == "tracks" && value != "") {
    records[id][prop].push(value)
  } else if (value == "") {
    delete records[id][prop]
  }
  return records;
}

updateRecords(recordCollection, 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/106.0.0.0 Safari/537.36

Challenge: Basic JavaScript - Record Collection

Link to the challenge:

the tracks property should always have value of array

Ok, but May I know why I am trying to understand this buggy part deeply?

Understanding bugs that you wrote is important. A big part of coding is fixing the small errors you wake while trying to accomplish a task.

Translating that to this problem - you wrote a small bug in updating the value of the tracks array, and fixing that bug is an important skill to practice.

It has to always be an array because that is the challenge requirement

2 Likes