Record Collection - Conceptual understanding needed

Record Collection - Conceptual understanding needed
0

#1

Tell us what’s happening:
I failed to accomplish this task even though I revised the relevant lectures a couple of times for this challenge. Now that I have its solution, I still fail to understand what is going on at

//This line (i) - An if statement within an if statement? How does this work?
//This line (ii) - In descriptive form, what does this code snippet mean?

if(collection[id][prop]) {
collection[id][prop].push(value);
}
else {
collection[id][prop]=[value];
}

//This line (iii) - Whats going on here?

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"
    }
};
// Keep a copy of the collection for tests
var collectionCopy = JSON.parse(JSON.stringify(collection));

// Only change code below this line
function updateRecords(id, prop, value) {
  if (prop === "tracks" && value !== "") {
   if(collection[id][prop]) {                                  //This line (i)
    collection[id][prop].push(value);
   } 
   else {                                                // This line (ii)
    collection[id][prop]=[value];
   }
  } else if (value !== "") {                         //This line (iii)
    collection[id][prop] = value;
  } else {
    delete collection[id][prop];
  }

  return collection;
}

// Alter values below to test your code
updateRecords(5439, "artist", "ABBA");

Your browser information:

User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:62.0) Gecko/20100101 Firefox/62.0.

Link to the challenge:
https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript/record-collection


#2
  1. You will see nested if statements often and it’s quite simple. If the first if statement passes then you are inside its if statement. Because there is another if statement inside, check for its condition and if it’s true, go inside its if statement and so forth.

  2. You can access values inside objects using bracket notations. This is simply inserting an array of variable value inside collection with certain id and prop. Checkout more at https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_accessors

  3. if statement is checking to see if there is a certain value that exists with given id and prop in the object. If then, push a value to its array if not, set that array to a new array with value.

If you are not understanding this, I would recommend you to study Object Oriented Programming under JavaScript algorithms and Data Structures Certification curriculum.