77 lines
5.5 KiB
Markdown
77 lines
5.5 KiB
Markdown
![]() |
---
|
|||
|
title: Slice and Splice
|
|||
|
localeTitle: شريحة و لصق
|
|||
|
---
|
|||
|
## شريحة و لصق
|
|||
|
|
|||
|
 تذكر استخدام **`Read-Search-Ask`** إذا واجهتك مشكلة. حاول إقران البرنامج  واكتب الكود الخاص بك 
|
|||
|
|
|||
|
###  شرح المشكلة:
|
|||
|
|
|||
|
نحتاج إلى نسخ كل عنصر من المصفوفة الأولى إلى المصفوفة الثانية بدءًا من الفهرس n. علينا أيضا أن نتأكد من أن المصفوفات الأصلية ليست متحولة. بمعنى ، لا يمكننا إجراء أي تغييرات على المصفوفات الأصلية.
|
|||
|
|
|||
|
#### روابط ذات صلة
|
|||
|
|
|||
|
* [str.slice ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice)
|
|||
|
* [str.splice ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice)
|
|||
|
|
|||
|
##  تلميح: 1
|
|||
|
|
|||
|
قم بإنشاء نسخة من المصفوفة الثانية داخل الدالة. سيضمن ذلك عدم تحوّل الصفيف الأصلي. يمكن القيام بذلك عن طريق استخدام عملية الشريحة في الصفيف الثاني ، وتعيينه إلى متغير.
|
|||
|
|
|||
|
> _حاول أن تحل المشكلة الآن_
|
|||
|
|
|||
|
##  تلميح: 2
|
|||
|
|
|||
|
قم بالالتفاف عبر كافة العناصر في الصفيف الأول. لكل عنصر في الصفيف الأول لصقه في المصفوفة المنسوخة في الفهرس المعطى كوسيطة.
|
|||
|
|
|||
|
> _حاول أن تحل المشكلة الآن_
|
|||
|
|
|||
|
##  تلميح: 3
|
|||
|
|
|||
|
زيادة المؤشر بعد إجراء لصق.
|
|||
|
|
|||
|
> _حاول أن تحل المشكلة الآن_
|
|||
|
|
|||
|
## تنبيه المفسد!
|
|||
|
|
|||
|

|
|||
|
|
|||
|
**الحل في المستقبل!**
|
|||
|
|
|||
|
##  الحل الأساسي للكود:
|
|||
|
|
|||
|
`function frankenSplice(arr1, arr2, n) {
|
|||
|
// It's alive. It's alive!
|
|||
|
let localArray = arr2.slice();
|
|||
|
for (let i = 0; i < arr1.length; i++) {
|
|||
|
localArray.splice(n, 0, arr1[i]);
|
|||
|
n++;
|
|||
|
}
|
|||
|
return localArray;
|
|||
|
}
|
|||
|
`
|
|||
|
|
|||
|
 [تشغيل الكود](https://repl.it/CLjU)
|
|||
|
|
|||
|
### شرح الشفرة:
|
|||
|
|
|||
|
* هدفنا هو أخذ جميع العناصر من `arr1` وإدخالها في `arr2` بدءًا من وضع الفهرس `n` . في نفس الوقت يجب علينا أن ensurethat لا `arr` أو `arr2` تم تحور.
|
|||
|
|
|||
|
* باستخدام الدالة `slice()` يمكننا إنشاء نسخة طبق الأصل من `arr2` بدقة وتعيين نتيجة العملية إلى متغير ، `localArray` .
|
|||
|
|
|||
|
* والآن بعد أن أصبح لدينا مجموعة يمكننا التحور عليها ، يمكننا التكرار من خلال كل عنصر في الصفيف الأول. لكل عنصر في الصفيف الأول يمكننا استخدام الدالة `splice()` لإدراج العنصر في فهرس `n` من `localArray` .
|
|||
|
|
|||
|
* نحن زيادة مؤشر `n` تلو الآخر. سيضمن هذا أن كل عنصر من `arr1` يتم إدخاله في `localArray` في موضع الفهرس الصحيح.
|
|||
|
|
|||
|
* وأخيرًا ، نعود إلى `localArray` الوظيفة.
|
|||
|
|
|||
|
|
|||
|
##  ملاحظات للمساهمات:
|
|||
|
|
|||
|
*  **لا تقم** بإضافة حلول مشابهة لأي حلول موجودة. إذا كنت تعتقد أنها **_مشابهة ولكن أفضل_** ، فحاول دمج (أو استبدال) الحل المشابه الموجود.
|
|||
|
* أضف شرحًا لحلك.
|
|||
|
* تصنيف الحل في واحدة من الفئات التالية - **الأساسي** **والمتوسط** **والمتقدم** . 
|
|||
|
* الرجاء إضافة اسم المستخدم الخاص بك فقط إذا قمت بإضافة أي **محتويات رئيسية ذات صلة** . (  **_لا_** _تزيل أي أسماء مستخدمين حالية_ )
|
|||
|
|
|||
|
> نرى  [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) كمرجع.
|