Can't tell what's wrong

Tell us what’s happening:
I can’t tell what’s wrong with my code. I crosschecked it with the solution in the Get Help section but can’t tell whats wrong since it looks similar.
Plz help.
Also :sweat_smile: I just coded based on the conditions it wants me to satisfy but I don’t know what it actually does to the the entire code . So if possible plz explain. I will be grateful. :relaxed:

Your code so far


// Setup
var collection = {
2548: {
  albumTitle: 'Slippery When Wet',
  artist: 'Bon Jovi',
  tracks: ['Let It Rock', 'You Give Love a Bad Name']
},
2468: {
  albumTitle: '1999',
  artist: 'Prince',
  tracks: ['1999', 'Little Red Corvette']
},
1245: {
  artist: 'Robert Palmer',
  tracks: []
},
5439: {
  albumTitle: 'ABBA Gold'
}
};

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

updateRecords(collection, 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/87.0.4280.66 Safari/537.36.

Challenge: Record Collection

Link to the challenge:

in what does it differ?

if the function is passed a different object than collection, that object is not changed

what do you mean ? I don’t understand,

You probably don’t understand because between your comment and the previous person’s comment are literally 10 seconds. Maybe you should invest more time to understand the post. :slightly_smiling_face:

The solution uses object in each if/else.
Your code uses collection.

Do you think there is no difference between these two things? Why do we have both if there would be no difference?

but isn’t the object collection ?

only in the case of the function call at the bottom:

so what will be the correct term ?
should I just replace all the collection with object ?

when you are inside a function, to make it reusable, reference only the function parameters

i can’t understand what to do ?

Should I go through the previous lessons again?

do not reference the global object, instead you need to always reference the function parameter

Can you say in a direct manner :sweat_smile: . I can’t understand what you are trying to say :sweat_smile:

what are the function parameters for this function?

object ,id ,prop and value

are you referecing inside the function something that is not one of those?

aren’t these the parameters ?

function updateRecords(object, id, prop, value)

yes, and inside the function you are also a variable that is not one of those

Please elaborate a little bit.

using your function, consider this:

let records = {
  23: {
    tracks: ["Happy Birthday"]
  }
}

updateRecords(records, 23, "tracks", "Jingle Bells");

console.log(records); // has this been changed?

well no because updateRecords is not defined

it’s the function you have written for this challenge, it’s not undefined