TGViewer
Tech Stuff Tech Stuff @techstuff100 · 1.21K subscribers
Post #314 798
داشتم LeetCode 290 رو حل می‌کردم که راه حلم روی یه تست کیس خاص fail میشد. یه آبجکت تعریف کرده بودم:
const map = {};


و در ادامه چنین شرطی داشتم:
if (word in map) {
//
}


توی اون تست کیس خاص word مقدار "constructor" داشت. بنابراین شرط من میشد:
"constructor" in map // true


و شرط داشت true برمی‌گردوند؛ در حالی که من هیچ‌وقت "constructor" رو به map اضافه نکردم.

دلیلش این بود که آبجکت‌هایی که با {} ساخته میشن، از Object.prototype ارث‌بری می‌کنن و constructor یکی از propertyهای اونجاست. عملگر in هم فقط پراپرتی‌های خود آبجکت رو بررسی نمی‌کنه و زنجیره prototype رو هم بررسی می‌کنه.

برای اینکه فقط پراپرتی‌های خود آبجکت بررسی بشن، می‌تونیم از Object.hasOwn استفاده کنیم:
Object.hasOwn(map, word)


یا اگر یک map کاملا خالی می‌خوایم که prototype نداشته باشه:
const map = Object.create(null);


#javascript

@techstuff100
  • ❤ 15
  • 🔥 8
  • 👍 2
More from @techstuff100
  1. Oct 9, 2026فاصله Levenshtein حداقل تعداد عملیات‌های ممکن (insertion، deletion و substitution) برای تب…
  2. Oct 6, 2026خروجی کد بالا (1) چیه؟ شاید اینطور فکر کنیم که وقتی به return "try" می‌رسیم، اجرای تابع مت…
  3. Oct 2, 2026قانون پارکینسون میگه کار اونقدر کش پیدا می‌کنه تا زمانی که برای تکمیلش داریم رو پر کنه. پر…
  4. Oct 1, 2026با بزرگ شدن LF باید slotهای بیشتری به hash tableمون اضافه کنیم که بهش میگن resizing. منطقی…
  5. Oct 1, 2026پرفورمنس hash table پرفورمنس hash tableها بطور متوسط (average case) پیچیدگی زمانی O(1) دار…
  6. Sep 29, 2026چطور ریموت کار کنیم ریموت کار کردن فقط این نیست که لپ‌تاپمون رو برداریم و از خونه کار کنیم…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →