This is really challenging. After dozens of attempts only 2 of the tests passed, i think i wrote the conditions as instructed but my statements are very suspect and i am unsure of how to end the chain with an else statement and dont know what i am doing incorrectly. Please help!
Your code so far
// 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 (value == ""){
delete records[id][prop];
}
else if (prop != "tracks" && value != ""){
return records[id][prop] = value;
}
else if (records[id].hasOwnProperty("tracks") == false){
return records[id]["tracks"] = [];
}
else if (prop == "tracks" && value != ""){
return records[id][prop].push(value);
}
else {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/113.0.0.0 Safari/537.36
else if (records[id].hasOwnProperty("tracks") == false ){
records[id]["tracks"] = [];
if (prop == "tracks" && value != ""){
records[id][prop].push(value);
}
thanks for pointing that out, i rewrote to this but now having issues with the 4th test only which is confusing as there are tests with similar parameters and ticked valid, must be something i missed but cant see it at all.
I removed all the return keywords from my statements, did that help why almost all tests got valid? if yes, please why?
return records;
Also removed the else as pointed out and left as instructed, i now understand that else statements are only necessary when all other conditions aren`t true.
It looks like you deleted the logic for when the tracks array is already there? You need to address all of this last bullet
If prop is tracks and value isn’t an empty string, you need to update the album’s tracks array. First, if the album does not have a tracks property, assign it an empty array. Then add the value as the last item in the album’s tracks array.
// 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 (value == ""){
delete records[id][prop];
}
else if (prop != "tracks" && value != ""){
records[id][prop] = value;
}
else if (records[id].hasOwnProperty("tracks") == false ){
records[id]["tracks"] = [];
if (prop == "tracks" && value != ""){
records[id][prop].push(value);
}
}
return records;
}
updateRecords(recordCollection, 5439, 'artist', 'ABBA');
I don`t know what i am doing wrong, nothing i try works. The annoying thing is test id 1245 and id 5439 have the same parameters and 5439 is valid but 1245 remains invalid and at a loss why, it is the only one of my tests that is not working. Am i navigating incorrectly to the object to access it? Please help.