What's the difference between collection[id][prop]=value and collection[id][prop]=[value]?

In my code, the line of of code:
collection[id][prop]=[value]
is needed to pass the following test:

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

Meanwhile, the similar line of code:
collection[id][prop]=value
is needed to pass the following two tests:

'After updateRecords(5439, “artist”, “ABBA”), artist should be “ABBA” ’
'After updateRecords(1245, “album”, “Riptide”), album should be “Riptide” ’

What is the difference between these two lines of code, and why can’t one line of code suffice for all three tests?

Your code so far


// Setup
var collection = {
2548: {
  album: "Slippery When Wet",
  artist: "Bon Jovi",
  tracks: [
    "Let It Rock",
    "You Give Love a Bad Name"
  ]
},
2468: {
  album: "1999",
  artist: "Prince",
  tracks: [
    "1999",
    "Little Red Corvette"
  ]
},
1245: {
  artist: "Robert Palmer",
  tracks: [ ]
},
5439: {
  album: "ABBA Gold"
}
};

// Only change code below this line
function updateRecords(id, prop, value) {
if (value==""){
delete collection[id][prop]
}
else if (prop=="tracks"&&collection[id].hasOwnProperty("tracks")){
  collection[id][prop].push(value)}


else if(prop=="album"||prop=="artist"){
collection[id][prop]=value

}

else{
collection[id][prop]=[value]
}
return collection;
}

updateRecords(5439, "artist", "ABBA");

Your browser information:

User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36.

Challenge: Record Collection

Link to the challenge:

Hello there.

The difference is in the instructions:

If prop is "tracks" but the album doesn’t have a "tracks" property, create an empty array before adding the new value to the album’s corresponding property.

That is satisfied by this line:

collection[id][prop]=[value]

Then, there is this instruction:

If prop isn’t "tracks" and value isn’t empty ( "" ), update or set the value for that record album’s property.

If the prop is not tracks, then you must not push/add an array to the property. So, this line satisfies that:

collection[id][prop]=value

In the first case, you are creating an array, putting value in it, then setting the property prop equal to it.
In the second case, you are just setting the property prop equal to value.

Hope this helps

1 Like

very correct , collection[id][prop] = value tells is like assigning the value to this property which has or is under an ID