تعويذات Elyse

تعويذات Elyse

تمرين تعلّمي

مقدمة

في 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 لإضافة عناصر إلى المصفوفة أو إزالتها منها. إليك بعضًا منها لتأخذها في الحسبان عند العمل على هذا التمرين:

push

يمكن إضافة value إلى نهاية المصفوفة باستخدام .push(value). تُرجع الطريقة الطول الجديد للمصفوفة.

const numbers = [1, 'two', 3, 'four'];
numbers.push(5); // => 5
numbers;
// => [1, 'two', 3, 'four', 5]

pop

يمكن إزالة آخر value من المصفوفة باستخدام .pop() تُرجع الطريقة القيمة المُزالة. سيقل طول المصفوفة بسبب هذا التغيير.

const numbers = [1, 'two', 3, 'four'];
numbers.pop(); // => four
numbers;
// => [1, 'two', 3]

shift

يمكن إزالة أول value من المصفوفة باستخدام .shift() تُرجع الطريقة القيمة المُزالة. سيقل طول المصفوفة بسبب هذا التغيير.

const numbers = [1, 'two', 3, 'four'];
numbers.shift(); // => 1
numbers;
// => ['two', 3, 'four']

unshift

يمكن إضافة value إلى بداية المصفوفة باستخدام .unshift(value). تُرجع الطريقة الطول الجديد للمصفوفة.

const numbers = [1, 'two', 3, 'four'];
numbers.unshift('one'); // => 5
numbers;
// => ['one', 1, 'two', 3, 'four']

splice

يمكن إزالة value عند index محدد من المصفوفة باستخدام .splice(index, 1). تُرجع الطريقة العنصر أو العناصر المُزالة.

const numbers = [1, 'two', 3, 'four'];
numbers.splice(2, 1, 'one'); // => [3]
numbers;
// => [1, 'two', 'one', 'four']
Advanced

هذه الطرق أقوى مما هو موصوف:

  • تسمح لك كل من push و unshift بإضافة أو إدراج قيم متعددة دفعة واحدة، عبر إضافة وسائط أكثر. هذا ليس ضروريًا لإكمال هذا التمرين.
  • يمكن لـ splice إزالة قيم متعددة بزيادة الوسيط الثاني. هذا ليس ضروريًا لإكمال هذا التمرين.
  • يمكن لـ splice أيضًا إضافة قيم متعددة عبر تمريرها كوسائط بعد deleteCount. يمكن استخدام هذا لاستبدال قيم، أو لإدراج قيم في منتصف المصفوفة (على سبيل المثال عن طريق إزالة 0 عناصر). هذا ليس ضروريًا لإكمال هذا التمرين.

التعليمات

بصفتها ساحرةً ناشئة، تحتاج Elyse إلى التدرّب على بعض الأساسيات. لديها رزمة من البطاقات وتريد التعامل معها.

ولتسهيل الأمور قليلًا، لا تستخدم إلا البطاقات من 1 إلى 10، لذا يمكن تمثيل رزمة بطاقاتها بمصفوفة من الأعداد. ويقابل موضع كل بطاقة الفهرسَ في المصفوفة. أي أن الموضع 0 يشير إلى البطاقة الأولى، والموضع 1 إلى البطاقة الثانية، وهكذا.

Note

يجب أن تُحدِّث جميع الدوال عدا دالتين مصفوفةَ البطاقات ثم تُرجع المصفوفة المعدَّلة، وهي طريقة شائعة للعمل تُعرف باسم نمط الباني، وتتيح لك ربط الدوال ببعضها بعضًا بطريقة أنيقة.

والاستثناءان هما getItem، التي يجب أن تُرجع البطاقة عند الموضع المعطى، وcheckSizeOfStack التي يجب أن تُرجع true إذا تطابق الحجم المعطى.

1. استرداد بطاقة من الرزمة

لاختيار بطاقة، أرجِع البطاقة عند الفهرس position من الرزمة المعطاة.

const position = 2;
getItem([1, 2, 4, 1], position);
// => 4

2. استبدال بطاقة في الرزمة

أجرِ بعض خفة اليد واستبدل البطاقة عند الفهرس position بالبطاقة البديلة المعطاة. أرجِع الرزمة المعدَّلة.

const position = 2;
const replacementCard = 6;
setItem([1, 2, 4, 1], position, replacementCard);
// => [1, 2, 6, 1]

3. إدراج بطاقة في أعلى الرزمة

اجعل بطاقة تظهر بإدراج بطاقة جديدة في أعلى الرزمة. أرجِع الرزمة المعدَّلة.

const newCard = 8;
insertItemAtTop([5, 9, 7, 1], newCard);
// => [5, 9, 7, 1, 8]

4. إزالة بطاقة من الرزمة

اجعل بطاقة تختفي بإزالة البطاقة عند الموضع position المعطى من الرزمة. أرجِع الرزمة المعدَّلة.

const position = 2;
removeItem([3, 2, 6, 4, 8], position);
// => [3, 2, 4, 8]

5. إزالة البطاقة العليا من الرزمة

اجعل بطاقة تختفي بإزالة البطاقة العليا من الرزمة. أرجِع الرزمة المعدَّلة.

removeItemFromTop([3, 2, 6, 4, 8]);
// => [3, 2, 6, 4]

6. إدراج بطاقة في أسفل الرزمة

اجعل بطاقة تظهر بإدراج بطاقة جديدة في أسفل الرزمة. أرجِع الرزمة المعدَّلة.

const newCard = 8;
insertItemAtBottom([5, 9, 7, 1], newCard);
// => [8, 5, 9, 7, 1]

7. إزالة بطاقة من أسفل الرزمة

اجعل بطاقة تختفي بإزالة البطاقة من أسفل الرزمة. أرجِع الرزمة المعدَّلة.

removeItemAtBottom([8, 5, 9, 7, 1]);
// => [5, 9, 7, 1]

8. التحقق من حجم الرزمة

تحقّق مما إذا كان حجم الرزمة يساوي stackSize أم لا.

const stackSize = 4;
checkSizeOfStack([3, 2, 6, 4, 8], stackSize);
// => false
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
JavaScript Exercism

مستعد لبدء تعويذات Elyse؟

سجّل في Exercism لتتعلّم وتتقن JavaScript عبر 37 مفهومًا159 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.