Files
freeCodeCamp/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/remove-elements-from-an-array-using-slice-instead-of-splice.md
2023-07-24 08:34:47 -07:00

3.0 KiB

id, title, challengeType, forumTopicId, dashedName
id title challengeType forumTopicId dashedName
9d7123c8c441eeafaeb5bdef Remove Elements from an Array Using slice Instead of splice 1 301236 remove-elements-from-an-array-using-slice-instead-of-splice

--description--

من الانماط الشائعة أثناء العمل مع ال arrays هو عندما تريد إزالة العناصر والحفاظ على بقية الـ array. يقدم JavaScript طريقة splice للقيام بذلك، التي تأخذ معطيات (arguments) رقم الترتيب المكان الذي تبدأ منه بإزالة العناصر، ثم عدد العناصر المراد إزالتها. إذا لم يقدم المعطي الثاني، فالافتراضي هو إزالة العناصر حتي النهاية. ومع ذلك، فإن طريقة splice تغير الـ array الأصلية التي يتم استدعاؤها عليها. إليك مثال:

const cities = ["Chicago", "Delhi", "Islamabad", "London", "Berlin"];
cities.splice(3, 1);

هنا splice ترجع السلسلة London وتحذفها من cities array. cities سيكون لها القيمة ["Chicago", "Delhi", "Islamabad", "Berlin"].

وكما رأينا في التحدي الأخير، فإن طريقة slice لا تغير الـ array الأصلية، ولكن ترجع واحدة جديدة يمكن حفظها في متغير. تذكر أن طريقة slice تأخذ معطين لرقم الترتيب لبدء بتقسيم (slice) وإنهائه (النهاية غير مشمولة)، وأنتاج هذه العناصر في قائمة (array) جديدة. ويساعد استخدام طريقة slice بدلاً من splice على تجنب أي تأثيرات جانبية تغير في الـ array.

--instructions--

أعّد كتابة الوظيفة nonMutatingSplice باستخدام slice بدلاً من splice. يجب أن يقصر طول القائمة cities المقدمة على 3، ويعيد array جديدة تحتوي على العناصر الثلاثة الأولى فقط.

لا تغيّر القائمة (array) الأصلية المقدمة للوظيفة (function).

--hints--

يجب أن يستخدم كودك طريقة slice.

assert(code.match(/\.slice/g));

يجب ألا يستخدم كودك طريقة splice.

assert(!code.match(/\.?[\s\S]*?splice/g));

You should not mutate the original array passed to the function.

assert.deepEqual(_inputCities, ["Chicago", "Delhi", "Islamabad", "London", "Berlin"]);

nonMutatingSplice(["Chicago", "Delhi", "Islamabad", "London", "Berlin"]) يجب أن ترجع ["Chicago", "Delhi", "Islamabad"].

assert.deepEqual(nonMutatingSplice(_inputCities), ["Chicago", "Delhi", "Islamabad"]);

--seed--

--seed-contents--

function nonMutatingSplice(cities) {

  return cities.splice(3);
}

--after-user-code--

const _inputCities = ["Chicago", "Delhi", "Islamabad", "London", "Berlin"];

--solutions--

function nonMutatingSplice(cities) {
  return cities.slice(0,3);
}