Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 70 additions & 0 deletions solutions/javascript/ozans-playlist/1/ozans-playlist.js
Original file line number Diff line number Diff line change
@@ -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);
}