Record Collection Challenge code question

Tell us what’s happening:
Hello

Could someone explain me the code for this challenge?
I understand what the answer does (for the updateRecords(5439, "artist", "ABBA");, at least), but I have been stuck in it anyway (even when being able to pass it), as I want to be sure I understand it well enough before moving on.

In the case, for example, of the check for “updateRecords(2548, "artist", ""), artist should not be set”. Why does it pass? Is artist being deleted because it is checking for an empty string? (even when there is no change for it in the console when checked and there is an album property too) or what happens to it?

Sorry for asking so much or not being able to explain myself better.

Thank you.

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

}

return collection;
}

updateRecords(5439, "artist", "ABBA");

Your browser information:

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

Challenge: Record Collection

Link to the challenge:

challenge instructions say:

If value is empty ( "" ), delete the given prop property from the album.

so, that’s what the code does

2 Likes

That’s exactly what I don’t get, artist has a value, “Bon Jovi”

not anymore after this

1 Like

Why not though? That is checking for an empty string isn’t it? artist is not an empty string before that so it shouldn’t be affected by that.

this are the challlenge instructions

here it makes that checks

here it deletes

1 Like

To clarify on what @ilenia has said - value is one of the function parameters.

if (value === "") is not checking if the item on the collection[id] object is empty, it is checking if the new value I give the function is empty.

1 Like

Thank you very much, @ilenia and @nhcarrigan for the help.
I’m sorry for insisting so much to better understand what you were telling me.