Record collection exercise

Tell us what’s happening:
please tell me …
at which point i do mistake

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

console.log(updateRecords(collection, 5439, 'artist', 'ABBA'));
console.log(updateRecords(collection, 5439, "tracks", "Take a Chance on Me"));
console.log(updateRecords(collection, 2548, "artist", " "));
console.log(updateRecords(collection, 1245, "tracks", "Addicted to Love"));
console.log(updateRecords(collection, 2468, "tracks", "Free"));
console.log(updateRecords(collection, 2548, "tracks", " "));
console.log(updateRecords(collection, 1245, "albumTitle", "Riptide"));

Your browser information:

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

Challenge: Record Collection

Link to the challenge:

This syntax makes no sense. return is a control statement. You can’t access properties of a control statement.

Why are you using or in your conditions?

1 Like

when i run this i get correct output. then whey it should show an error.

This code does not make the correct output. It is wrong. You have syntax bugs with return, as I said.

function updateRecords(object, id, prop, value) {
  if (value === '') delete object[id][prop];
  else if (prop === 'tracks') {
    object[id][prop] = object[id][prop] || []; // this is called shortcircuit evaluation, see below for explanation
    object[id][prop].push(value);
  } else {
    object[id][prop] = value;
  }

  return object;
}

is this correct.

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 (’).

Yes, that copy of the solution in the guide looks correct.