Trying to understand answer

I struggled with this one for a while ad finally gave up and looked at the hints. I understand most of the provided solution except for the statement under the else if (prop == tracks) where it states collection[id][prop] = collection[id][prop] || [];
How does the OR in that line get tested? What determines which side of the OR is assigned to collection[id][prop}?

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 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:

This is a shorthand. If the value on the left is truthy, it will be assigned to the variable. Otherwise the value on the right is.

  collection[id][prop] = collection[id][prop] || [];
// equivalent to
collection[id][prop] = collection[id][prop] ? collection[id] : [];
// or
if (collection[id][prop]) {
    collection[id][prop] = collection[id][prop]; // you wouldn't actually write this of course
} else {
    collection[id][prop] = [];
}
3 Likes

I see. They should explain this shorthand before introducing it to us. This will definitely come in handy in the future. Thank you.

The person who contributed that particular solution knew the shorthand, but it’s by no means required to solve the problem. Since you have to do some research on your own as you progress through the curriculum, you will often find that people discover tools at different times.

I see. I will need to go through and try to do it without the shorthand just to make sure that I am proficient because I failed the tests with all the attempts I made. Back to the drawing board!