Record collection errors

Tell us what’s happening:
Hey,i need help looking at what’s wrong with my code as I keep failing to pass the test and I can’t seem to find what I’m doing wrong

Your code so far


// Setup
var collection = {
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(object, id, prop, value) {
if(prop !="tracks" && value !==""){
  object[id][prop]=value;
}
else if(prop==="tracks" && !object[id][prop].hasOwnProperty("tracks")){
  object[id][prop]=[value];
}
else if(prop==="tracks" && value!=""){
  object[id][prop].push(value);
}
else if (value===""){
  delete object[id][prop];
}
return object;
}


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

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36.

Challenge: Record Collection

Link to the challenge:

what do the tests say?
what appear in the console?

Three errors come up;
After updateRecords(collection, 5439, "tracks", "Take a Chance on Me") , tracks should have Take a Chance on Me as the last element.

After updateRecords(collection, 2468, "tracks", "Free") , tracks should have 1999 as the first element.

After updateRecords(collection, 2548, "tracks", "") , tracks should not be set

I would have expected also an hasOwnProperty() is not a function

but, uh…

anyway,

is really this what you want to check? what’s object[id][prop]?

I’ve corrected that with “tracks”==" ".
But still I’m left with this error

After updateRecords(collection, 5439, "tracks", "Take a Chance on Me") , tracks should have Take a Chance on Me as the last element.

"tracks" == " " is not what you should check, that is always false as you are comparing two strings

1 Like

okay…got it. but what could be the cause for the existing error

After updateRecords(collection, 5439, "tracks", "Take a Chance on Me") , tracks should have Take a Chance on Me as the last element.

can’t wrap my head around it.

What is your current full code?

function updateRecords(object, id, prop, value) {

  if(prop !=="tracks" && value !==""){

    object[id][prop]=value;

  }

  else if(prop==="tracks" && prop==" "){

    object[id][prop]=[value];

  }

  else if(prop==="tracks" && value!==""){

    object[id][prop].push(value);

  }

  else if (value===""){

    delete object[id][prop];

  }

  return object;

}

P.S I’m really confused on what next to do

I’ve edited your post for readability. When you enter a code block into a forum post, please precede it with a separate line of three backticks and follow it with a separate line of three backticks to make it easier to read.

You can also use the “preformatted text” tool in the editor (</>) to add backticks around text.

See this post to find the backtick on your keyboard.
Note: Backticks (`) are not single quotes (’).

function updateRecords(object, id, prop, value) {
  if (prop !== "tracks" && value !== "") {
    object[id][prop] = value;
  } else if (prop === "tracks" && prop == " ") { // What does this second condition mean?
    object[id][prop] = [value];
  } else if (prop === "tracks" && value !== "") {
    object[id][prop].push(value);
  } else if (value === "") {
    delete object[id][prop];
  }
  return object;
}

I added a comment in your code

Thanks just solved it :sweat_smile: :sweat.

1 Like