Tell us what’s happening:
This is what I have to do:-
Write a function which takes an album’s id
(like 2548
), a property prop
(like "artist"
or "tracks"
), and a value
(like "Addicted to Love"
) to modify the data in this collection.
If prop
isn’t "tracks"
and value
isn’t empty ( ""
), update or set the value
for that record album’s property.
Your function must always return the entire collection object.
There are several rules for handling incomplete data:
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 prop
is "tracks"
and value
isn’t empty ( ""
), push the value
onto the end of the album’s existing tracks
array.
If value
is empty ( ""
), delete the given prop
property from the album.
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 "prop";
else if(id != ""){
if (prop != "tracks" && value != "")
collection.id.album = value;
else if(prop = "tracks")
collection.id.tracks = "";
if (value !="")
collection.id.tracks= value;
else
delete "prop";
}
return collection;
}
updateRecords(5439, "artist", "ABBA");
These points should be fulfilled :-
1. You should not change the collection object's initialization
2. After updateRecords(5439, "artist", "ABBA"), artist should be "ABBA"
3. After updateRecords(5439, "tracks", "Take a Chance on Me"), tracks should have "Take a Chance on Me" as the last element.
4. After updateRecords(2548, "artist", ""), artist should not be set
5. After updateRecords(1245, "tracks", "Addicted to Love"), tracks should have "Addicted to Love" as the last element.
6. After updateRecords(2468, "tracks", "Free"), tracks should have "1999" as the first element.
7. After updateRecords(2548, "tracks", ""), tracks should not be set
After updateRecords(1245, "album", "Riptide"), album should be "Riptide"
Your browser information:
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36
.
Challenge: Record Collection
Link to the challenge: