Basic JavaScript - Record Collection

HI, I have two question about this code.

  1. Why can’t I use dot natation mix bracket notation records.id[prop]=value instead of records[id][prop]=value

  2. Why "tracks" should be place double quote rather than type track without double quote? I’m confused about the rules.

Thank you for help. :smiley:

Your code so far

// 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/107.0.0.0 Safari/537.36

Challenge: Basic JavaScript - Record Collection

Link to the challenge:

You could use this dot notation if records had a property named id, but it does not. It does however have 4 properties (names are 2548, 2468, 1245, and 5439)

1 Like

Do notation only works with the exact, literal property name, not a variable holding the property name.

You don’t use quotes if you want the value of a variable called tracks. Do you have one of those?

1 Like