Record Collection Syntax Problem

I understand everything except the part records[id][prop] = [value];
why we use brackets for value? Please someone explain it to me?


// Setup
var recordCollection = {
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(records, id, prop, value) {

if(prop !== "tracks" && value !== ""){
  records[id][prop] = value; 
}
else if(prop === "tracks" && records[id].hasOwnProperty("tracks") === false){
  records[id][prop] = [value];
}
else if(prop === "tracks" && value !== ""){
  records[id][prop].push(value);
}
else if(value === ""){
  delete records[id][prop];
}
return records;
}

updateRecords(recordCollection, 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/90.0.4430.212 Safari/537.36

Challenge: Record Collection

Link to the challenge:

because in this condition:
prop === "tracks" && records[id].hasOwnProperty("tracks") === false
you are checking to see if there is an existing tracks property when you are asked to add to it.

If it does not, then you need to initialize the value of tracks, which should be an array. [value] means an array 1 element (the variable value) in length.

If you were to just initialize it as value then it would be just a string and subsequently will throw errors when you try to push new tracks.

1 Like

thank you so much. You explained very well.

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.