إضافة عناصر إلى المصفوفة في JavaScript: دليل عملي لاستخدام الدالة push()
إضافة عناصر إلى نهاية المصفوفة في JavaScript
عند العمل على المصفوفات في JavaScript، ستحتاج كثيراً إلى إضافة قيمة جديدة أو عدة قيم في نهاية المصفوفة. في هذه الحالة، تُعد الدالة push() من أبسط الأدوات وأكثرها استخداماً، لأنها تضيف العناصر مباشرة إلى آخر المصفوفة وتُحدّثها في المكان نفسه.
تستقبل الدالة push() عنصراً واحداً أو عدة عناصر، ثم تُلحقها بنهاية المصفوفة:
let arr = [0, 1, 2, 3];
arr.push(4);
console.log(arr); // [0, 1, 2, 3, 4]

كيف تعمل الدالة push()؟
وظيفة push() هي إضافة عنصر أو أكثر إلى نهاية المصفوفة. وما يميزها أنها لا تنشئ مصفوفة جديدة، بل تعدّل المصفوفة الأصلية مباشرة، وهذا أمر مهم يجب فهمه لتجنب الأخطاء أثناء البرمجة.
يمكنك تمرير عدد غير محدود من القيم داخل push()، وستُضاف كلها بالترتيب نفسه:
let arr = [0, 1, 2, 3];
arr.push(4, 5, 6, 7, 8, 9);
console.log(arr); // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
القيمة التي تُرجعها push()
من الأخطاء الشائعة الاعتقاد بأن push() تُرجع المصفوفة بعد التعديل. في الواقع، هي تُرجع الطول الجديد للمصفوفة بعد إضافة العناصر.
let arr = [0, 1, 2, 3];
let newLength = arr.push(4);
console.log(newLength); // 5
هذا يعني أن المتغير newLength سيحتوي على عدد العناصر بعد الإضافة، وليس على المصفوفة نفسها.
أخطاء شائعة عند استخدام push() في JavaScript
إعادة إسناد المصفوفة بشكل خاطئ
من أكثر الأخطاء انتشاراً أن يقوم المطور بإعادة إسناد قيمة المصفوفة إلى ناتج push(). وبما أن الدالة تعيد طول المصفوفة لا المصفوفة نفسها، فإن ذلك يؤدي إلى فقدان البيانات الأصلية.
let arr = [0, 1, 2, 3];
arr = arr.push(4);
console.log(arr); // 5
في المثال السابق، أصبحت قيمة arr هي الرقم 5 بدلاً من أن تبقى مصفوفة. لتجنب هذا الخطأ، استخدم push() مباشرة دون إعادة الإسناد:
let arr = [0, 1, 2, 3];
arr.push(4);
console.log(arr); // [0, 1, 2, 3, 4]
إضافة عناصر مصفوفة إلى مصفوفة أخرى
إذا أردت نقل محتوى مصفوفة كاملة إلى نهاية مصفوفة أخرى، فلا يكفي تمرير المصفوفة الثانية كعنصر واحد، لأن push() سيتعامل معها باعتبارها عنصراً مستقلاً. الحل الأنسب هنا هو استخدام معامل النشر spread operator بصيغة ... لتفكيك عناصر المصفوفة.
let arr1 = [0, 1, 2, 3];
let arr2 = [4, 5, 6, 7];
arr1.push(...arr2);
console.log(arr1); // [0, 1, 2, 3, 4, 5, 6, 7]
بهذه الطريقة، تُضاف عناصر arr2 واحداً تلو الآخر إلى نهاية arr1، وهو سلوك عملي ومفيد عند دمج البيانات.
استخدام push() مع الكائنات الشبيهة بالمصفوفات
توجد في JavaScript كائنات تشبه المصفوفات في بنيتها، لكنها لا تمتلك كل الدوال المتاحة للمصفوفات الفعلية. من أشهر الأمثلة على ذلك الكائن arguments داخل الدوال، والذي يتيح الوصول إلى جميع الوسائط الممررة.
لاستخدام push() مع هذا النوع من الكائنات، يجب أولاً تحويله إلى مصفوفة حقيقية:
function myFunc() {
let args = [...arguments];
args.push(4);
return args;
}
console.log(myFunc(0, 1, 2, 3)); // [0, 1, 2, 3, 4]
في هذا المثال، جرى تحويل arguments إلى مصفوفة عبر spread syntax، ثم أُضيف العنصر الجديد باستخدام push().
ماذا يحدث إذا لم تحوّل arguments إلى مصفوفة؟
إذا حاولت استدعاء push() مباشرة على arguments دون تحويله، فغالباً ستظهر لك رسالة خطأ من النوع TypeError، لأن arguments لا يحتوي على هذه الدالة بشكل افتراضي.
TypeError: arguments.push is not a function
متى تكون push() الخيار المناسب؟
تُعد push() مناسبة في الحالات التالية:
- عندما تحتاج إلى إضافة عنصر واحد أو أكثر إلى نهاية المصفوفة.
- عندما لا تمانع تعديل المصفوفة الأصلية مباشرة.
- عندما تريد معرفة الطول الجديد للمصفوفة بعد الإضافة.
أما إذا كنت تحتاج إلى إنشاء نسخة جديدة من المصفوفة دون تعديل الأصل، فقد تكون أساليب أخرى مثل concat() أو استخدام spread syntax داخل مصفوفة جديدة خياراً أفضل حسب السيناريو.
نصائح عملية لاستخدام push() بكفاءة
- لا تُعد إسناد المصفوفة إلى ناتج
push()إلا إذا كنت تريد الطول الجديد فقط. - استخدم
push(...array)عند دمج عناصر مصفوفة داخل أخرى. - تحقق من نوع البيانات قبل استخدام
push()، لأن الدالة تعمل على المصفوفات الحقيقية. - حافظ على وضوح الكود، خاصة عندما تتعامل مع مصفوفات كبيرة أو بيانات ديناميكية.
الخلاصة التقنية
تُعد الدالة push() من الدوال الأساسية التي يجب إتقانها عند التعامل مع المصفوفات في JavaScript. ميزتها الكبرى أنها بسيطة وسريعة وتنجز مهمة الإضافة إلى نهاية المصفوفة بكفاءة عالية. لكن فهم سلوكها بدقة، خصوصاً أنها تعدّل المصفوفة الأصلية وتُرجع طولها الجديد، هو ما يصنع الفارق بين استخدام صحيح وآخر يسبب أخطاء منطقية في التطبيق.