-
Notifications
You must be signed in to change notification settings - Fork 0
/
record-collection-exercise.js
51 lines (45 loc) · 1.65 KB
/
record-collection-exercise.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
// You are given a JSON object representing a part of your musical album collection. Each album has several properties and a unique
// id number as its key. Not all albums have complete information. 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:
// 1. 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.
// 2. If prop is "tracks" and value isn't empty (""), push the value onto the end of the album's existing tracks array.
// 3. If value is empty (""), delete the given prop property from the album.
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"
}
};
function updateRecords(id, prop, value) {
if(value === "") delete collection[id][prop];
else if(prop === "tracks") {
collection[id][prop] = collection[id][prop] || [];
collection[id][prop].push(value);
} else {
collection[id][prop] = value;
}
return collection;
}
updateRecords(5439, "artist", "ABBA");