Object.entries(): لماذا وكيف نحول الكائنات إلى مصفوفات مفتاح-قيمة؟


Object.entries(): لماذا وكيف نحول الكائنات إلى مصفوفات مفتاح-قيمة؟

في عالم تطوير الويب الحديث، تعد القدرة على معالجة البيانات وتحويلها بمرونة أمرًا بالغ الأهمية. غالبًا ما نعمل مع الكائنات (Objects) في JavaScript لتخزين البيانات المنظمة على شكل أزواج مفتاح-قيمة. ولكن ماذا لو احتجنا إلى التعامل مع هذه الأزواج كعناصر فردية ضمن مصفوفة؟ هنا يأتي دور الدالة Object.entries().

ما هو Object.entries()؟

ببساطة، Object.entries() هي دالة مدمجة في JavaScript (تم تقديمها في ES2017) تقوم بتحويل كائن معين إلى مصفوفة من المصفوفات الفرعية. كل مصفوفة فرعية تمثل زوجًا من [مفتاح, قيمة] من الكائن الأصلي. إنها طريقة رائعة "لتسطيح" الكائن وجعل محتوياته قابلة للتكرار والتعامل معها كبيانات مصفوفة.

لماذا نستخدم Object.entries()؟ (الـ Why)

تكمن القوة الحقيقية لـ Object.entries() في المشاكل التي تحلها والسيناريوهات التي تبسطها:

1. التكرار المرن على أزواج المفتاح-القيمة:

بينما يمكننا التكرار على مفاتيح الكائن باستخدام for...in أو Object.keys()، فإن Object.entries() توفر طريقة مباشرة للوصول إلى كل من المفتاح والقيمة معًا في كل تكرار، مما يسهل معالجة البيانات.

const user = { name: "أحمد", role: "مطور" };for (const [key, value] of Object.entries(user)) {  console.log(`${key}: ${value}`);}// الناتج:// name: أحمد// role: مطور

2. تحويل البيانات وتوافقها:

في كثير من الأحيان، قد تحتاج واجهات برمجة التطبيقات (APIs) أو المكتبات الخارجية إلى بيانات بتنسيق مصفوفة، وليس كائنًا. Object.entries() تتيح لك تحويل الكائن بسهولة إلى هذا التنسيق المطلوب، مما يضمن التوافق السلس.

3. استخدام دوال المصفوفات القوية:

بمجرد تحويل الكائن إلى مصفوفة باستخدام Object.entries()، يمكنك الاستفادة من جميع دوال المصفوفات القوية في JavaScript مثل map()، filter()، reduce()، و forEach(). هذا يفتح الباب أمام معالجة بيانات أكثر تعقيدًا ومرونة بطريقة وظيفية (Functional Programming).

const product = { id: 1, name: "لابتوب", price: 1200 };const productDetails = Object.entries(product).map(([key, value]) => `${key}: ${value}`);console.log(productDetails);// الناتج: ["id: 1", "name: لابتوب", "price: 1200"]

4. بناء هياكل بيانات جديدة:

يمكن استخدامها لبناء كائنات Map جديدة أو إعادة بناء الكائنات بطرق مختلفة، مما يوفر مرونة كبيرة في التعامل مع هياكل البيانات.

💡 نصيحة المطور: تذكر أن Object.entries() تقوم بإرجاع مصفوفة جديدة ولا تعدل الكائن الأصلي. هذا يحافظ على مبدأ عدم التغيير (Immutability) وهو ممارسة جيدة في البرمجة لتجنب الآثار الجانبية غير المتوقعة. كما أنها تتجاهل الخصائص غير القابلة للتعداد (non-enumerable properties) والخصائص الموجودة في سلسلة النموذج الأولي (prototype chain).

خاتمة

Object.entries() هي أداة قوية ومرنة في ترسانة مطور JavaScript. إن فهم متى ولماذا نستخدمها يمكن أن يحسن بشكل كبير من كيفية معالجتك للبيانات ويجعل الكود الخاص بك أكثر وضوحًا وقابلية للصيانة. في الدرس العملي القادم، سنتعمق في كيفية عملها خطوة بخطوة مع أمثلة عملية.



🔗 الخطوة التالية: انتقل إلى التطبيق العملي وجرب الكود بنفسك من هنا.