diff --git a/solutions/javascript/ozans-playlist/1/ozans-playlist.js b/solutions/javascript/ozans-playlist/1/ozans-playlist.js new file mode 100644 index 0000000..1b61856 --- /dev/null +++ b/solutions/javascript/ozans-playlist/1/ozans-playlist.js @@ -0,0 +1,70 @@ +// @ts-check +// +// The line above enables type checking for this file. Various IDEs interpret +// the @ts-check directive. It will give you helpful autocompletion when +// implementing this exercise. + +/** + * Removes duplicate tracks from a playlist. + * + * @param {string[]} playlist + * @returns {string[]} new playlist with unique entries + */ +export function removeDuplicates(playlist) { + let dedup = new Set(playlist); + return Array.from(dedup); +} + +/** + * Checks whether a playlist includes a track. + * + * @param {string[]} playlist + * @param {string} track + * @returns {boolean} whether the track is in the playlist + */ +export function hasTrack(playlist, track) { + let newPlaylist = new Set(playlist); + return newPlaylist.has(track); + +} + +/** + * Adds a track to a playlist. + * + * @param {string[]} playlist + * @param {string} track + * @returns {string[]} new playlist + */ +export function addTrack(playlist, track) { + let newPlsylist = new Set(playlist); + newPlsylist.add(track); + return Array.from(newPlsylist); +} + +/** + * Deletes a track from a playlist. + * + * @param {string[]} playlist + * @param {string} track + * @returns {string[]} new playlist + */ +export function deleteTrack(playlist, track) { + let newPlaylist = new Set(playlist); + newPlaylist.delete(track); + return Array.from(newPlaylist); +} + +/** + * Lists the unique artists in a playlist. + * + * @param {string[]} playlist + * @returns {string[]} list of artists + */ +export function listArtists(playlist) { + let uniqueArtist = new Set(); + for (let item of playlist){ + let [song, artist] = item.split(" - "); + uniqueArtist.add(artist); + } + return Array.from(uniqueArtist); +}