JavaScript / المصفوفات

عمليات المصفوفات (2): push و pop و shift و unshift

أضف قيمًا إلى بداية المصفوفة أو نهايتها واحذفها منها دون إعادة كتابة المصفوفة. منهج البكالوريا

القوائم في الحياة تتغير: مكوّن جديد في الوصفة، طالب يدخل الطابور وآخر يخرج. بدل كتابة المصفوفة من جديد نستخدم أربع عمليات: اثنتان تعملان في نهاية المصفوفة واثنتان في بدايتها.

في النهاية: push و pop

list.push(value) «تدفع» قيمة (أو أكثر، تفصلها فواصل) إلى نهاية المصفوفة. وlist.pop() تحذف القيمة الأخيرة:

JavaScript
const sandwich = ["bread", "lettuce", "tomato"];
sandwich.push("mayo", "cheese");
console.log(sandwich);
sandwich.pop();
console.log(sandwich);
وحدة التحكم
["bread", "lettuce", "tomato", "mayo", "cheese"]
["bread", "lettuce", "tomato", "mayo"]
يمكن استخدام هذه العمليات مع مصفوفة معرّفة بـ const؛ لأننا نغيّر محتوى المصفوفة ولا نضع مكانها مصفوفة جديدة.

في البداية: shift و unshift

list.shift() تحذف القيمة الأولى فتتقدّم بقية القيم خطوة. وlist.unshift(value) تضيف قيمة إلى البداية:

JavaScript
const ranking = ["Lily", "Noah", "Mason", "Hassan"];
ranking.pop();
ranking.unshift("Hassan");
console.log(ranking);
ranking.shift();
console.log(ranking);
وحدة التحكم
["Hassan", "Lily", "Noah", "Mason"]
["Lily", "Noah", "Mason"]
إضافةحذف
في النهايةpush(v)pop()
في البدايةunshift(v)shift()
pop() وshift() لا يُكتب شيء داخل أقواسهما؛ فهما تحذفان قيمة مكانها معروف. أما push وunshift فتحتاجان القيمة المضافة.

استخدامات مفيدة

pop() وshift() تُرجعان القيمة المحذوفة، فنستطيع حفظها في متغير. وpush داخل حلقة تبني مصفوفة جديدة تبدأ فارغة []:

JavaScript
const queue = ["Ali", "Mona", "Omar"];
const first = queue.shift();
console.log("Served: " + first);
console.log(queue);

const evens = [];
for (let i = 2; i <= 10; i = i + 2) {
  evens.push(i);
}
console.log(evens);
وحدة التحكم
Served: Ali
["Mona", "Omar"]
[2, 4, 6, 8, 10]

تدريبات

1أكمل الفراغتدريب المنهج

أكمل السطر 3 لتضيف "mayo" و"bacon" معًا إلى نهاية sandwichIngredients بسطر واحد.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
const sandwichIngredients = ["bread", "lettuce", "tomato", "cheese"];

___
console.log("Sandwich Ingredients");
console.log(sandwichIngredients);
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
2أكمل الفراغتدريب المنهج

الآيس كريم لا مكان له في المكرونة! أكمل السطر 3 لتحذف القيمة الأخيرة من ingredientsList.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
const ingredientsList = ["pasta", "tomatoes", "garlic", "cheese", "ice cream"];

___
console.log("Pasta Ingredients");
console.log(ingredientsList);
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
3أكمل الفراغتدريب المنهج

أكمل السطر 3 لتحذف القيمة الأولى من burgerIngredients.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
const burgerIngredients = ["cucumber", "sauce", "shrimp", "mayo"];

___
console.log("Burger ingredients");
console.log(burgerIngredients);
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
4أكمل الفراغتدريب المنهج

أكمل السطر 3 لتضيف "mushroom" إلى بداية burgerIngredients.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
const burgerIngredients = ["cucumber", "sauce", "shrimp", "mayo"];

___
console.log("Burger ingredients");
console.log(burgerIngredients);
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
5اكتب البرنامجتدريب المنهج

في السطر 3 احذف الحرف الزائد في آخر letterList حتى تبقى حروف كلمة program فقط.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
let letterList = ["p", "r", "o", "g", "r", "a", "m", "y"];


console.log(letterList);
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
6اكتب البرنامجتدريب إضافي

طابور المقصف: Sara تنضم إلى آخر الطابور، ثم يُخدم أول طالب ويخرج. اطبع Served: Ali (استخدم القيمة التي تُرجعها shift())، ثم اطبع الطابور: ["Mona", "Omar", "Sara"].

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
const queue = ["Ali", "Mona", "Omar"];
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.
7اكتب البرنامجتدريب إضافي

ابنِ مصفوفة جديدة اسمها passed فيها الدرجات التي تساوي 50 أو أكثر فقط (استخدم push داخل for...of). اطبعها ثم اطبع عددها: [78, 90, 66] ثم 3.

JavaScript Ctrl/⌘ + Enter للتشغيل · Esc ثم Tab للخروج من المحرر
const marks = [45, 78, 90, 30, 66];
const passed = [];
وحدة التحكم
اضغط «تشغيل» لترى النتيجة.

النقاط الرئيسية

  • النهاية: push(v) تضيف وpop() تحذف.
  • البداية: unshift(v) تضيف وshift() تحذف.
  • pop() وshift() تُرجعان القيمة المحذوفة، وpush في حلقة تبني مصفوفة جديدة.