Help me out here!

Tell us what’s happening:
This is what I have to do:-
Write a function which takes an album’s id (like 2548 ), a property prop (like "artist" or "tracks" ), and a value (like "Addicted to Love" ) to modify the data in this collection.

If prop isn’t "tracks" and value isn’t empty ( "" ), update or set the value for that record album’s property.

Your function must always return the entire collection object.

There are several rules for handling incomplete data:

If prop is "tracks" but the album doesn’t have a "tracks" property, create an empty array before adding the new value to the album’s corresponding property.

If prop is "tracks" and value isn’t empty ( "" ), push the value onto the end of the album’s existing tracks array.

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

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

    if (value !="")
     collection.id.tracks= value;
    else
    delete "prop";
    }

 return collection;
}

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

These points should be fulfilled :-
1.  You should not change the collection object's initialization
2.  After updateRecords(5439, "artist", "ABBA"), artist should be "ABBA"
3.  After updateRecords(5439, "tracks", "Take a Chance on Me"), tracks should have "Take a Chance on Me" as the last element.
4.  After updateRecords(2548, "artist", ""), artist should not be set
5.  After updateRecords(1245, "tracks", "Addicted to Love"), tracks should have "Addicted to Love" as the last element.
6.  After updateRecords(2468, "tracks", "Free"), tracks should have "1999" as the first element.
7.  After updateRecords(2548, "tracks", ""), tracks should not be set
After updateRecords(1245, "album", "Riptide"), album should be "Riptide"

Your browser information:

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

Challenge: Record Collection

Link to the challenge:

In what way does your code not do what you expect? What would you like help with?

It’s not fulfilling all the points that are asked by the question!

How so?
Tell me more. What tests are failing? What errors are you getting?

1 Like

Nothing except the 1st point!
(p.s. I have added the points that should be fulfilled after the code!)

I’m asking these questions for a reason and you aren’t really answering me. You describing what is going wrong helps you understand the issues and helps us have a shared vocabulary about what is happening.

For example, if I just copy and paste your code into the editor, I get

TypeError: collection.id is undefined

Do you see the same error?

TypeError: Cannot set property ‘album’ of undefined

This is what it’s showing!

Ok, so the code you are posting is different than the code in your editor in some way. Did you change something? If so, please update your code in your first post or post your changed code in a new reply. (please use the </> button when posting code)

no it’s the same code only!

Strange. Are you running this code somewhere other than the FCC editor?

Anyway, you have a ton of bugs.

  1. Please use {} for each if, else if, and else. It is very unclear how you intend your if statements to logically group.
  2. Remember that = is assignment, == is loose comparison, and === is strict comparison. You should be using === and !== only.
  3. delete "prop"; is not how you delete the property prop from the album.
  4. collection.id.tracks is not how you access a property of an object when id and tracks is a variable.