-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathupdaterecords.js
More file actions
114 lines (76 loc) · 2.61 KB
/
updaterecords.js
File metadata and controls
114 lines (76 loc) · 2.61 KB
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
// 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",
"tracks": [
"Fernando"
]
}
};
// 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 (value == "") {
delete collection[id][prop];
return collection;
}
else if (prop == 'tracks') {
if (collection[id][prop] == undefined) {
let arr = [];
arr.push(value);
collection[id]['tracks'] = arr;
return collection;
}
else {
collection[id]['tracks'].push(value);
return collection;
}
}
else if (prop == 'artist' ) {
collection[id].artist = value;
return collection;
}
else if (prop != 'tracks' && prop != "") {
collection[id]['album'] = value;
return collection;
}
return collection;
}
updateRecords(5439, "gigi", "hello")
// Alter values below to test your code
//updateRecords(5439, "artist", "ABBA");
/*
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. DONE
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. DONE
If prop is "tracks" and value isn't empty (""), push the value onto the end of the album's existing tracks array. DONE
If value is empty (""), delete the given prop property from the album. DONE
Hints
Use bracket notation when accessing object properties with variables.
Push is an array method you can read about on Mozilla Developer Network.
You may refer back to Manipulating Complex Objects Introducing JavaScript Object Notation (JSON) for a refresher.
*/