Record Collection- Help Please

Tell us what’s happening:
I just do not understand this exercise.

I can’t get it right without looking at hint or watching videos and even with the videos online, i still do not really get how to solve this.

Can someone maybe explain it to me? Maybe from a different angle than videos on online? My code is below.

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

// Alter values below to test your code
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/70.0.3538.110 Safari/537.36.

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

collection[id][prop]=(value);

Why is value in parentheses?


  else if (prop === "tracks" && "tracks" == "") {

The string "tracks" is never going to equal the string "", so this bock will never execute.


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

First you used brackets ([]) for your push, then you used parentheses. Why?


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

What if collection[id].tracks doesn’t exist? You can only push on an array. if it isn’t an array, you’ll get an error.


  else if (value == "") {
    delete collection[id][prop];
  }

What if collection[id][prop] doesn’t exist?

To be honest I don’t know the answer to any of those :pensive:

I am so stuck.

  1. I don’t know why it is in parentheses. Thought I saw it somewhere like that. It says " update or set the value for that record album’s property." What does that really mean?

  2. It says album doesn’t have “tracks”, so wouldn’t “tracks” be equal to empty string?

  3. The parentheses and brackets are depending on it is asking to push an array or value? Guess i should use arr.push?

  4. I don’t understand

Thank you for the response though. Really appreciate it.

Take the time on each of those independently and find answers.

This is an excellent example of why copying other code hurts you rather than helps.

"tracks" is just a string containing the letters t,r,a,c,k,s.

Review what push is and how it works.

Investigate.