Please help me here. I'm either not able to understand the problem statement or I've coded wrong

Tell us what’s happening:
Describe your issue in detail here.

  **Your code so far**

// 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) {
var hasTrack = records[id].hasOwnProperty("tracks");
if(prop != "tracks" && value != ""){
  records[id].prop = value;
}else if(prop == "tracks" && hasTrack == false ){
  records.id['tracks'] = value;
}else if(prop == "tracks" && value != ""){
  records.id.tracks.push(value);
}else if(value ==""){
  delete record.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/91.0.4472.114 Safari/537.36

Challenge: Record Collection

Link to the challenge:

This is the Code Solution (Working) given in the hint section -

Please help me understand a few point here -

  1. I tried to update the values using ( . ) operator instead of and it gave error, why?
  2. When should I use ( . ) and when should I use ?
// 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 help is appreciated. Thank you so much

you can’t use dot notation with variables
you can use dot notation only if you are using the literal name of the property
if you have a variable you need to use bracket notation

1 Like

Thank you so much. That was helpful.

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