מילון - TypeScript: Map עם מפתח (אובייקט) לא עובד


יש לי כמה בעיות כשאני בודק אם למפה כבר יש אובייקט כמפתח.

למשל

const myMap: Map<MyObject1, MyObject2> = new Map<MyObject1, MyObject2>();

אני גם הגדרתי פונקציית שווה במחלקת MyObject1

equals(other: ThreatAgentMgm): boolean {
    return other.id === this.id;
}

אבל myMap.has(myObject1) תמיד מחזיר false. קראתי שהשיטה has מבוססת על האופרטור ===, האם אני צריך להגדיר משהו אחר במחלקת MyObject1?

תשובה #1

מכיוון שכל אובייקט JSON בסופו של דבר הוא רק מחרוזת, בסופו של דבר השתמשתי ב-JSON.stringify(myObject) כמפתח של ה-Map, וזוג ערכים (MyObject1, MyObject2) כערך בפועל. כך אני מסוגל לקבל את הערך הרצוי בזמן O(1) תוך שמירה על אובייקט המפתח זמין, מבלי הצורך לנתח שוב את JSON או, גרוע מכך, להוציא אותו שוב מהמסד הנתונים.