Basic JavaScript - Record Collection

Tell us what’s happening:
Below scenario’s do not pass, please help …
After updateRecords(recordCollection, 5439, “tracks”, “Take a Chance on Me”), tracks should have the string Take a Chance on Me as the last and only element.
After updateRecords(recordCollection, 1245, “tracks”, “Addicted to Love”), tracks should have the string Addicted to Love as the last element.
After updateRecords(recordCollection, 2468, “tracks”, “Free”), tracks should have the string 1999 as the first element.

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 (value === "") { 
    delete records[id][prop];
  }

  else if (prop !== "tracks" && value !== "") {
    records[id][prop] = value;
  }

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

updateRecords(recordCollection, 5439, 'artist', 'ABBA');
// 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 (value === "") { 
    delete records[id][prop];
  }

  else if (prop !== "tracks" && value !== "") {
    records[id][prop] = value;
  }

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

updateRecords(recordCollection, 5439, 'artist', 'ABBA');

Your browser information:

User Agent is: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0

Challenge: Basic JavaScript - Record Collection

Link to the challenge:

All of your issues are in the code snippet above.

Extra hints: Two issues on the first line. One issue on the last line.

2 Likes

Try running the first failing test:

console.log(updateRecords(recordCollection, 5439, "tracks", "Take a Chance on Me"));

You will get error messages you need to fix.

ReferenceError: tracks is not defined ; I am not sure I need to declare tracks

What is tracks? Is it really a variable? Think carefully about what you are testing here. What are you using hasOwnProperty for? (By the way, I just gave you another hint).

1 Like
//updated, "tracks"  -string. Also hasOwnProperty was updated. Thanks for the support


function updateRecords(records, id, prop, value) {
  if (value === "") { 
    delete records[id][prop];
  }

  else if (prop !== "tracks" && value !== "") {
    records[id][prop] = value;
  }

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

updateRecords(recordCollection, 5439, 'artist', 'ABBA');

console.log(updateRecords(recordCollection, 5439, "tracks", "Take a Chance on Me"));

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