I don't know what's wrong with my code

Tell us what’s happening:
I don’t understand what’s wrong with this code and why this test case is failing.

updateRecords(5439, "tracks", "Take a Chance on Me")

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(prop === "tracks"){
    if(!collection[id].tracks){
      newTracks = [];
      newTracks.push(value);
      collection[id][prop] = newTracks;
    } else if(value.length === 0){
      delete collection[id][prop];
    } else {
      collection[id][prop].push(value);
    }
  } else if(value.length !== 0) {
    collection[id][prop] = value;
  } else {
      delete collection[id][prop];
  }
  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/81.0.4044.138 Safari/537.36.

Challenge: Record Collection

Link to the challenge:

you need to declare all variables

if you add the failing function call to the editor you can see the error.

1 Like

For me it helped to re-arranged the text
before i started the task. I only added the last line and the if else.

If value isn’t empty (""), update or set the value for that record album’s property.
Your function must always return the entire collection object.
If value is empty (""), delete the given prop property from the album.

Else if prop is “tracks”
Create an empty array before adding the new value to the album’s corresponding property. 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”
push the value onto the end of the album’s existing tracks array.
Your function must always return the entire collection object.

Else
Your function must always return the entire collection object.
and set it to value.

1 Like