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

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.