في JavaScript، المصفوفة بنية شبيهة بالقائمة ليس لها طول ثابت، ويمكنها أن تحمل أي نوع من القيم الأولية أو الكائنات، حتى الأنواع المختلطة.
لإنشاء مصفوفة، أضف العناصر بين الأقواس المربعة [].
للقراءة من المصفوفة، ضع الفهرس بين الأقواس المربعة [] بعد المُعرّف.
تبدأ فهارس المصفوفة من الصفر.
على سبيل المثال:
const numbers = [1, 'two', 3, 'four'];
numbers[2];
// => 3
لمعرفة عدد العناصر الموجودة في المصفوفة، استخدم خاصية length:
const numbers = [1, 'two', 3, 'four'];
numbers.length;
// => 4
لتغيير عنصر في المصفوفة، تُسند قيمة عند الفهرس:
const numbers = [1, 'two', 3, 'four'];
numbers[0] = 'one';
numbers;
// => ['one', 'two', 3, 'four']
يمكن استخدام بعض الطرق المتاحة على كل كائن Array لإضافة عناصر إلى المصفوفة أو إزالتها منها.
إليك بعضًا منها لتأخذها في الحسبان عند العمل على هذا التمرين:
يمكن إضافة value إلى نهاية المصفوفة باستخدام .push(value).
تُرجع الطريقة الطول الجديد للمصفوفة.
const numbers = [1, 'two', 3, 'four'];
numbers.push(5); // => 5
numbers;
// => [1, 'two', 3, 'four', 5]
يمكن إزالة آخر value من المصفوفة باستخدام .pop()
تُرجع الطريقة القيمة المُزالة.
سيقل طول المصفوفة بسبب هذا التغيير.
const numbers = [1, 'two', 3, 'four'];
numbers.pop(); // => four
numbers;
// => [1, 'two', 3]
يمكن إزالة أول value من المصفوفة باستخدام .shift()
تُرجع الطريقة القيمة المُزالة.
سيقل طول المصفوفة بسبب هذا التغيير.
const numbers = [1, 'two', 3, 'four'];
numbers.shift(); // => 1
numbers;
// => ['two', 3, 'four']
يمكن إضافة value إلى بداية المصفوفة باستخدام .unshift(value).
تُرجع الطريقة الطول الجديد للمصفوفة.
const numbers = [1, 'two', 3, 'four'];
numbers.unshift('one'); // => 5
numbers;
// => ['one', 1, 'two', 3, 'four']
يمكن إزالة value عند index محدد من المصفوفة باستخدام .splice(index, 1).
تُرجع الطريقة العنصر أو العناصر المُزالة.
const numbers = [1, 'two', 3, 'four'];
numbers.splice(2, 1, 'one'); // => [3]
numbers;
// => [1, 'two', 'one', 'four']
هذه الطرق أقوى مما هو موصوف:
push و unshift بإضافة أو إدراج قيم متعددة دفعة واحدة، عبر إضافة وسائط أكثر.
هذا ليس ضروريًا لإكمال هذا التمرين.splice إزالة قيم متعددة بزيادة الوسيط الثاني.
هذا ليس ضروريًا لإكمال هذا التمرين.splice أيضًا إضافة قيم متعددة عبر تمريرها كوسائط بعد deleteCount.
يمكن استخدام هذا لاستبدال قيم، أو لإدراج قيم في منتصف المصفوفة (على سبيل المثال عن طريق إزالة 0 عناصر).
هذا ليس ضروريًا لإكمال هذا التمرين.بصفتها ساحرةً ناشئة، تحتاج Elyse إلى التدرّب على بعض الأساسيات. لديها رزمة من البطاقات وتريد التعامل معها.
ولتسهيل الأمور قليلًا، لا تستخدم إلا البطاقات من 1 إلى 10، لذا يمكن تمثيل رزمة بطاقاتها بمصفوفة من الأعداد. ويقابل موضع كل بطاقة الفهرسَ في المصفوفة. أي أن الموضع 0 يشير إلى البطاقة الأولى، والموضع 1 إلى البطاقة الثانية، وهكذا.
يجب أن تُحدِّث جميع الدوال عدا دالتين مصفوفةَ البطاقات ثم تُرجع المصفوفة المعدَّلة، وهي طريقة شائعة للعمل تُعرف باسم نمط الباني، وتتيح لك ربط الدوال ببعضها بعضًا بطريقة أنيقة.
والاستثناءان هما getItem، التي يجب أن تُرجع البطاقة عند الموضع المعطى، وcheckSizeOfStack التي يجب أن تُرجع true إذا تطابق الحجم المعطى.
لاختيار بطاقة، أرجِع البطاقة عند الفهرس position من الرزمة المعطاة.
const position = 2;
getItem([1, 2, 4, 1], position);
// => 4
أجرِ بعض خفة اليد واستبدل البطاقة عند الفهرس position بالبطاقة البديلة المعطاة.
أرجِع الرزمة المعدَّلة.
const position = 2;
const replacementCard = 6;
setItem([1, 2, 4, 1], position, replacementCard);
// => [1, 2, 6, 1]
اجعل بطاقة تظهر بإدراج بطاقة جديدة في أعلى الرزمة. أرجِع الرزمة المعدَّلة.
const newCard = 8;
insertItemAtTop([5, 9, 7, 1], newCard);
// => [5, 9, 7, 1, 8]
اجعل بطاقة تختفي بإزالة البطاقة عند الموضع position المعطى من الرزمة.
أرجِع الرزمة المعدَّلة.
const position = 2;
removeItem([3, 2, 6, 4, 8], position);
// => [3, 2, 4, 8]
اجعل بطاقة تختفي بإزالة البطاقة العليا من الرزمة. أرجِع الرزمة المعدَّلة.
removeItemFromTop([3, 2, 6, 4, 8]);
// => [3, 2, 6, 4]
اجعل بطاقة تظهر بإدراج بطاقة جديدة في أسفل الرزمة. أرجِع الرزمة المعدَّلة.
const newCard = 8;
insertItemAtBottom([5, 9, 7, 1], newCard);
// => [8, 5, 9, 7, 1]
اجعل بطاقة تختفي بإزالة البطاقة من أسفل الرزمة. أرجِع الرزمة المعدَّلة.
removeItemAtBottom([8, 5, 9, 7, 1]);
// => [5, 9, 7, 1]
تحقّق مما إذا كان حجم الرزمة يساوي stackSize أم لا.
const stackSize = 4;
checkSizeOfStack([3, 2, 6, 4, 8], stackSize);
// => false
سجّل في Exercism لتتعلّم وتتقن JavaScript عبر 37 مفهومًا159 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.