Basic JavaScript - Record Collection

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

Your code so far

I need assistance here
// 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.hasOwnProperty("tracks")) {
    records[id][prop] = [];
  } else if (prop == "tracks" && value != '') {
    records[id][prop] = records[id][prop].push(value);
  } else if (value == '') {
    delete records[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/ Safari/537.36

Challenge: Basic JavaScript - Record Collection

Link to the challenge:

You’re pretty close but you missed a few critical details.

  • If prop is tracks but the album doesn’t have a tracks property, create an empty array and add value to it.
else if (prop == "tracks" && records.hasOwnProperty("tracks")) {
    records[id][prop] = [];

Your conditional statement checks if the records does have a ‘tracks’ property. Also, you also need to be more specific as you’re checking the property of a particular record (i.e. you need to include the id field). Finally, you’re creating an array but not pushing any value to it.

records[id][prop] = records[id][prop].push(value);

This is not the correct way to push a value to an array. You don’t need the first half of the expression.

delete records[prop];

Again, this won’t work, as you need to include the id field to specify the particular record.

Fix these things and your code will pass!

1 Like
records.hasOwnProperty("tracks") != prop

Is this how it is done?

No. You have correctly accessed properties within records in other parts of your code, with records[id][prop]. However, if you want to check if a particular record has a particular property in the first place, you first access the record (records[id]) and then check if it has the property, using hasOwnProperty() as you did.

Whenever you want to reverse a condition (e.g. to check that a record doesn’t have a specific property), you can just negate the expression by prefixing it with !.


if (a == 1) {
return 'yes'

…and the reverse

if (!a == 1) {
return 'no'

…which could also be written as

if (a != 1) {
return 'no'

The first type of negation is extremely useful in cases where the second isn’t valid (as in your case above).

thanks for the help it worked. You are really good.

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