Basic JavaScript - Record Collection

Tell us what’s happening:
I am wondering why the solutions have the … && value !== “” … in the else ifs? If the initial if statement testing the value for an empty string fails, does that not already imply the value is != a blank string? Is it then unnecessary to include the && statements in subsequent else ifs?

Sorry if this seem pedantic but I am new to coding and wanted to know if I was doing something wrong by not including this && condition? My code passes, just wanted to hear what more experienced coders think?

Your code so far

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

//(updateRecords(recordCollection, 5439, "artist", "ABBA"))
//console.log((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/116.0.0.0 Safari/537.36

Challenge: Basic JavaScript - Record Collection

Link to the challenge:

I think you are correct that there is no real need to check for an empty string for the purposes of this challenge. None of the test cases cover that scenario, and I think it’s a good thing that this sounded the alarm in your head.

For instance, what would happen if props === "tracks" && value === "" ? For the moment, an empty string will be pushed to the tracks array, but is that really the desired behavior?

Good question!

1 Like