Help me please :(!

Tell us what’s happening:
So guys. Why do I need sometimes brackets, and sometimes not? It’s so confusing. Can someone explain me? (The problem is where the arrows are)

Thank you very much!!!


// Setup
const 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/97.0.4692.99 Safari/537.36

Challenge: Record Collection

Link to the challenge:

Here you are supposed keep the tracks prop as an array

records[id][prop] = value; , if the prop is not tracks just directly assign the value like
record.artist : "coldplay"

records[id][prop] = [value], if the tracks is currently not defined on the object you have to initially create an array. [value] means create an array and push value to it. like

record.tracks : ["fix you"]

records[id][prop].push(value) if tracks already exist push the value to it like
record.tracks : ["fix you", "hymn for the weekend"]

2 Likes

Very well explained :handshake: I understand it! Thank you for quick reply! :fire::muscle:t4:

1 Like