Skip to content

Instantly share code, notes, and snippets.

@arnonrdp
Last active August 8, 2023 08:40
Show Gist options
  • Save arnonrdp/06b4a3e3f3a6a4de09736aaaa8f170f9 to your computer and use it in GitHub Desktop.
Save arnonrdp/06b4a3e3f3a6a4de09736aaaa8f170f9 to your computer and use it in GitHub Desktop.
freeCodeCamp - JavaScript Algorithms and Data Structures - Record Collection
// Setup
var 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") {
records[id][prop] ??= [];
records[id][prop].push(value);
} else {
records[id][prop] = value;
}
return records;
}
updateRecords(recordCollection, 5439, "artist", "ABBA");

Record Collection

You are given an object literal representing a part of your musical album collection. Each album has a unique id number as its key and several other properties. Not all albums have complete information.

You start with an updateRecords function that takes an object literal, records, containing the musical album collection, an id, a prop (like artist or tracks), and a value. Complete the function using the rules below to modify the object passed to the function.

  • Your function must always return the entire record collection object.
  • If prop isn't tracks and value isn't an empty string, update or set that album's prop to value.
  • If prop is tracks but the album doesn't have a tracks property, create an empty array and add value to it.
  • If prop is tracks and value isn't an empty string, add value to the end of the album's existing tracks array.
  • If value is an empty string, delete the given prop property from the album. Note: A copy of the recordCollection object is used for the tests.
@arnonrdp
Copy link
Author

arnonrdp commented Aug 8, 2023

@nadeTheBuggy, the question is the same. They just changed the order of the conditions.

The if/else sequence I created is just to try and make the whole thing less complex.

Do not give up.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment