Introduction

Welcome! Today, we will explore creating a simple address book application using JavaScript Map. This task will help you understand manipulating Map in JavaScript, focusing on adding, retrieving, and deleting entries. By the end of this lesson, you'll have a solid grasp of these fundamental operations.

Introducing Methods to Implement

In this task, we will implement three methods to manage our address book:

  • addContact(name, phoneNumber): Adds a new contact. Returns false if the contact already exists; otherwise, it adds the contact and returns true. In this task, let's assume phone numbers do not change, so it's not allowed to overwrite the existing contact's number.
  • getContact(name): Retrieves the phone number for a given name. Returns undefined if the contact does not exist.
  • deleteContact(name): Deletes a contact with the given name. Returns true if the contact exists and is deleted, false otherwise.

Let's break down each method in detail in the next sections.

Step 1: Implementing `addContact`

This method adds a new contact to the address book with the given name and phoneNumber. If the contact already exists, it returns false. Otherwise, it adds the contact and returns true.

Question: Why do you think we need to check if the contact already exists?

Answer: To avoid duplicating existing entries. Also, if a contact with the same name already exists, we shouldn't allow overwriting its phone number in this method, as it's only for creation. Here is the method implementation:

class AddressBook {
    constructor() {
        this.contacts = new Map();
    }

    addContact(name, phoneNumber) {
        if (this.contacts.has(name)) {
            return false;
        }
        this.contacts.set(name, phoneNumber);
        return true;
    }
}

// Example usage:
const addressBook = new AddressBook();
console.log(addressBook.addContact("Alice", "123-456-7890")); // true
console.log(addressBook.addContact("Alice", "098-765-4321")); // false
console.log(addressBook.contacts); // Map(1) { 'Alice' => '123-456-7890' }

In this method:

  • We verify if the contact already exists using if (this.contacts.has(name)).
  • If it exists, we return false.
  • If it doesn't exist, we add it to our Map and return true.
Sign up
Join the 1M+ learners on CodeSignal
Be a part of our community of 1M+ users who develop and demonstrate their skills on CodeSignal