Basic JavaScript - Record Collection

Tell us what’s happening:
I took a slightly different approach to the Solution 1 provided and it looks like I’m getting to the correct output but apparently I’m still doing something wrong as the code won’t pass. The biggest difference is that I’m not making a “hasOwnProperty” rule based on it being false first, I think. Can anyone provide further context on what’s wrong with my version of the code?

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

}

updateRecords(recordCollection, 5439, 'tracks', 'Take a chance on me');
console.log(recordCollection)

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36

Challenge: Basic JavaScript - Record Collection

Link to the challenge:

Something is weird here. If the logic says that there is no “tracks” in the object, how can it assign a value to tracks in the else statement if there is no “tracks”?

  1. prop = "tracks" This is not a comparison, it is an assignment.

  2. Look what you are logging out, in the last object you can see tracks is not an array. It should be an array.

Ah…that makes sense. I guess using brackets around “value” makes the property recognize it as an array? I just entered this for the else statement and looks like it works:

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

Thank you for that tip, it was really helpful!

Thanks for this - it really helped me think about wtf I was actually doing there…I adjusted the else statement to this and looks like it works! Thank you!

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

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.