Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

99
Views
HashMap in TypeScript with custom object

Introduction

I am currently work in project that I need to save the score of each user. For this I used a Map<User, number> to represent it.

Problematic

If I create map with a user named john:

let myMap: Map<User, number> = new Map();
myMap.set(new User("John","Hasherman"), 0);

And if I want to set John Hasherman’s score to 1 (voluntarily using a new instance and not the one previously used), with this code:

myMap.set(new User("John","Hasherman"), 1);

But TypeScript create a new element inside myMap.

Question

So my question is, do you know if it’s possible to customize the comparator used inside the map? like Java when defining hashCode() and equals(o Object)?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

You'll need a way for the User to expose functionality that will identify a particular user, perhaps by name, or perhaps by a more unique ID. Either way, a Map where each user is the key isn't very suited to the job, but it's possible.

class User {
    public first: string;
    public last: string;
    constructor(first: string, last: string) {
        this.first = first;
        this.last = last;
    }
}

const myMap: Map<User, number> = new Map();
myMap.set(new User("John","Hasherman"), 0);

// to set John's value to 1:
const foundJohn = [...myMap.keys()].find(
    obj => obj.first === 'John' && obj.last === 'Hasherman'
);
if (foundJohn) {
    myMap.set(foundJohn, 1);
}

It's somewhat convoluted. I'd suggest considering a different data structure if possible.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!