Record Collection . -please help

Tell us what’s happening:
I am having the hardest time monipulating JSON. Please help

Your code so far
function updateRecords(id, prop, value) { // <–a function which takes an album’s id (like 2548), a property prop (like “artist” or “tracks”), and a value

if(prop != tracks && value != “”){ // <–if prop isn’t “tracks” and value isn’t empty (""),

album[prop] = value; // <–update or set the value for that record album’s property.

} else if(prop === tracks && album != tracks) { // <–If prop is “tracks” but the album doesn’t have a “tracks” property

album.push[""]; // <–create an empty array

album.prop.push[value]; // <–before adding the new value to the album’s corresponding property.

} else if(value === “”) { //<–If value is empty ("")

delete album.prop; //<–delete the given prop property from the album.


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

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

Your browser information:

User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36.

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

The logic seems almost sound… but you have a few issues with the syntax and method used.
What is album? Where have you defined it? What do you expect if you do console.log(album)? (Try, it is not what you think)

When you write tracks that is a variable, not defined anywhere, instead wouldn’t you want it to be a string? "tracks"

When you write album.push[{}], you are pushing an empty object, why?

You may also want to brush up on when you need to use bracket notation and when you can use dot notation.

You can find this useful too:

This is not creating an empty array, this will not work as you want.

I read that exercise but I still have a confident grasp of it please bare with me.

here is what I have so far…


// Only change code below this line

function updateRecords(id, prop, value) {

if(prop != “tracks” && value != “”){

prop = value; //update or set value for that record album’s property

}else if( prop === “tracks” && id != “tracks” ){

collection[id][prop] = value; // not sure how I can make a new array before adding a new value to that records property.

}else if(prop === “tracks” && value!=""){

collection.prop.push[value];

}else if ( value === “”){

delete prop.value

}

}

return collection;

}

You are changing the value of prop, the function parameter, this is not affecting the object in any way

Can id ever be "tracks"?

Do you know how to add a value to an already existing array?

If the array don’t exist, [ ] < this is an empty array, [value] this is an array with value inside

push() doesn’t work like that.
collection.prop is not what you think
Look at how the object is made, this will never reach anything.
Also, check out the difference between dot notation and bracket notation

What is it prop.value?
It will never reach anything, you need to modify collection but you are not accessing it in any way here
Check again difference between dot notation and bracket notation