Record collection - royally stuck

Tell us what’s happening:

Hi guys, don’t usually post on here but I’ve run into a serious block on this question for some reason. It feels weird because I’ve done harder algorithms on loops, etc. but else/if always seems to get me…

I tried to free wheel some code to get something down, but I feel I’m not really getting close to the solution.

Any help before I start reverse engineering from the solution would be very helpful. Oh and apologies for the terrible code! haha

Many thanks!

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
//collection[id][prop]
function updateRecords(id, prop, value) {
if (value = ""){
delete collection[id][prop];
} else if (prop !== "tracks" && value !== null){
collection[id][prop] = value;
} if (prop === "tracks"){
if (collection[id][tracks] === null){
  tracks.push(collection[id]);
} else {
  tracks.push(collection[id]);
}
} 

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/80.0.3987.149 Safari/537.36.

Challenge: Record Collection

Link to the challenge:

In your first conditional you have a syntax error.
(Edit: Not a syntax error but syntax you probably didn’t intend to use here, that being an assignment operator)
if (value = "")
should be
if (value === "")

Once that’s corrected it works at least with the parameters passed to the function in your example.

A couple other mistakes that you are making is you are checking if some values are equal to null but this will never equate to true because null is never passed in to the function in the tests. What is passed in is an empty string.

null === null // true
"" === null // false

Then also, in the code you provided at least, there is no tracks variable so you are pushing to a variable that doesn’t exists.

I can tell you are heading in the right direction and encourage you to keep at it.

1 Like

Thanks a lot for your help; means a lot!

This one got me down a little but but I thought best to ask a question and keep any momentum going even if it’s only a little step! :slight_smile:

Coming from a math background I tend to understand loops, functions within functions, etc. really well. But the more “computer sciencey/logic” areas like if/else and booleans take a bit of work! haha