Record Collection: pushing an element in an array

Tell us what’s happening:
Hi, I am trying to push an element in an array but it is not working and, I checked the syntax.

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"
    }
};
// 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 !== "") {
     collection[id].prop = value;
     return collection;
   }
   else if(prop === "tracks" && collection[id].prop === undefined) {
     collection[id].prop = [];
     collection[id].prop = value;
     return collection;
   }else if(prop === "tracks" && collection[id].prop !== "") {
     collection[id].prop.push(toString(value);
     return collection;
   }else if(value === "") {
     delete collection[id].prop
     return collection;
   }
    
  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_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36.

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

I see an error here. You need 1 more closing parentheses.

In addition to @shimphillip note about a different issue, If you are talking about the line above, collection[id].prop is not an array. When you use dot notation like you have done with prop above, there must be an actually property named “prop” in the object. Since there is not, collection[id].prop is undefined and undefined is definitely not an array. You should review the following lessons on when to use dot vs. bracket notation.

https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/object-oriented-programming/use-dot-notation-to-access-the-properties-of-an-object/

https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript/accessing-object-properties-with-bracket-notation/

https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript/accessing-object-properties-with-variables

1 Like

thank you. I have read the information about bracket notation and it works