Tell us what’s happening:
// running tests
After updateRecords(5439, “artist”, “ABBA”), artist should be “ABBA”
Cannot read property ‘pop’ of undefined
After updateRecords(2548, “artist”, “”), artist should not be set
After updateRecords(1245, “tracks”, “Addicted to Love”), tracks should have “Addicted to Love” as the last element.
After updateRecords(2548, “tracks”, “”), tracks should not be set
After updateRecords(1245, “album”, “Riptide”), album should be “Riptide”
// tests completed
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"
}
};
// Keep a copy of the collection for tests
var collectionCopy = JSON.parse(JSON.stringify(collection));
// Only change code below this line
function updateRecords(id, prop, value) {
//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.
if (collection[id][prop] === "tracks" && "album" !=="tracks") {
collection[id][prop] = [];
collection[id][prop] = [value];
}
//if prop not tracks and value is empty update or set the value for that record
else if (collection[id][prop] !== "tracks" && [value] === "") {
collection[id][prop] = [value];
}
//If prop is "tracks" and value isn't empty (""), push the value onto the end of the album's existing tracks array.
if (collection[id][prop] === "tracks" && [value] !== "") {
if (collecion[id][prop] === "album") {
collection[id][prop].push(value);
}
}
//If value is empty (""), delete the given prop property from the album.
else if (collection[id][value] === "") {
delete collection[id][prop];
}
return collection;
}
// Alter values below to test your code
updateRecords(5439, "artist", "ABBA");
Your browser information:
User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36
.
Link to the challenge:
https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript/record-collection