Is any help? to explain this?

Tell us what’s happening:

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

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

what is mean this word?

what word? if you mean tracks and propprop is a variable used in the code, it is one of the parameters of the updateRecords function. "tracks" is one of the possible values of prop. prop indicate the property name of the object that the function should change

I mean this word : before adding the new value to the album’s corresponding property.

the property tracks is an array, if you need to update the property tracks you need to add a value to the array. If the array doesn’t exist, you can’t add a value to an array that doesn’t exist (you would see error TypeError: Cannot read property 'push' of undefined), so you need to create an empty array before trying to add the value to the array

so i must return value , like first step =>collection[id][prop] = value; but he give me error after create array? like this:
else if(prop === “tracks” && !collection[id][prop] === “tracks”){
collection[id][prop] = ;
collection[id][prop] = value;

this is always true because prop can be "tracks" but collection[id][prop] is never tracks

not like this, because in this way collecion[id]["tracks"] will be a string, instead collection[id]["tracks"] has to be an array

now I’m lost , I write this { !collection[id][prop] === “tracks”
} because he said :
but the album doesn’t have a "tracks" property,
he doesn’t say: value === “tracks”;

collection[id][prop] = value; so without value like this collection[id][prop] ; return as array?

here you are checking the value of the property, you are not checking if the object has that property.
You already learned how to check if an object has a property, you can review this lesson: https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/basic-javascript/testing-objects-for-properties

no, you need to assign an array with the assignment operator (=), remember that an array has the square brackets around it. value is a string, [value] is an array