Object Iterations

عنی روش‌هایی که می‌تونیم روی یک Object تکرار (iterate) انجام بدیم.

1️⃣ for...in

این حلقه برای کلیدهای enumerable یک آبجکت استفاده میشه.

const person = { name: "Ali", age: 25, city: "Tehran" }; for (let key in person) { console.log(key, person[key]); } // خروجی: // name Ali // age 25 // city Tehran

⚠️ توجه: for...in حتی کلیدهایی که از prototype به ارث برده شده باشن رو هم میاره.
برای جلوگیری میشه از hasOwnProperty استفاده کرد:

for (let key in person) { if (person.hasOwnProperty(key)) { console.log(key, person[key]); } }

2️⃣ ()Object.keys

این متد فقط کلیدهای مستقیم شیء (نه از پروتوتایپ) رو برمی‌گردونه.

Object.keys(person).forEach(key => { console.log(key, person[key]); });

3️⃣ ()Object.values

این متد فقط مقدارها رو برمی‌گردونه.

Object.values(person).forEach(value => { console.log(value); }); // خروجی: Ali , 25 , Tehran

4️⃣ ()Object.entries

این متد هر پراپرتی رو به صورت [key, value] برمی‌گردونه.

for (let [key, value] of Object.entries(person)) { console.log(key, value); } // خروجی: // name Ali // age 25 // city Tehran

5️⃣ تبدیل Object به Array و استفاده از متدهای Array

const entries = Object.entries(person); console.log(entries); // [["name","Ali"],["age",25],["city","Tehran"]] entries.map(([key, value]) => console.log(`${key}: ${value}`));

📌 خلاصه مقایسه

  • 🔹 for...in → همه پراپرتی‌های enumerable (شامل prototype).

  • 🔹 Object.keys(obj) → فقط کلیدهای مستقیم.

  • 🔹 Object.values(obj) → فقط مقدارها.

  • 🔹 Object.entries(obj) → آرایه از [key, value].