Files
freeCodeCamp/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/apply-functional-programming-to-convert-strings-to-url-slugs.md
2022-10-20 09:13:17 -07:00

3.3 KiB

id, title, challengeType, forumTopicId, dashedName
id title challengeType forumTopicId dashedName
587d7dab367417b2b2512b6d Apply Functional Programming to Convert Strings to URL Slugs 1 301227 apply-functional-programming-to-convert-strings-to-url-slugs

--description--

قد غطت التحديات العديدة الأخيرة عددا من الـ methods المفيدة للـ arrays والـ strings والتي تتبع مبادئ الـ functional programming. لقد تعلمنا أيضًا عن reduce، وهي method قوية تستخدم للحد من المشاكل إلى أشكال أبسط. من حساب المتوسطات الي الفرز، اي عملية علي array يمكن تحقيقها بتطبيقا. تذكر أن map و filter هم حالات خاصة من reduce.

دعونا نجمع ما تعلمناه لحل مشكلة عملية.

تحتوي العديد من مواقع إدارة المحتوى (CMS) على عناوين منشور تمت إضافتها إلى جزء من عنوان URL لأغراض مرجعية. على سبيل المثال، إذا قمت بكتابة منشور علي موقع Medium بعنوان Stop Using Reduce، من المحتمل أن يكون عنوان URL يحتوي على جزء ما من عنوان المنشور (.../stop-using-reduce). ربما كنت قد لاحظت هذا بالفعل على موقع freeCodeCamp.

--instructions--

قم بملء دالة urlSlug بحيث تقوم بتحويل title وإرجاع النسخة الموصولة بعلامة الشرطة للـ URL. يمكنك استخدام أي من الـ methods التي يغطيها هذا القسم، ولكن لا تستخدم replace. وفيما يلي المتطلبات:

الإدخال عبارة عن string مع مسافات وكلمات title-cased، اي ان اول حرف من كل كلمة يكون حرف كبير (Uppercase)

الإخراج عبارة عن string مع مسافات بين الكلمات التي تم استبدالها بعلامة الشرطة (-)

يجب ان تكون جميع الحروف المخرجة lower-case

لا ينبغي أن يحتوي الناتج على أي مسافات

--hints--

لا ينبغي أن يستخدم الكود الخاص بك replace لهذا التحدي.

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

urlSlug("Winter Is Coming") يجب أن يعيد السلسلة winter-is-coming.

assert(urlSlug('Winter Is Coming') === 'winter-is-coming');

urlSlug(" Winter Is Coming") يجب أن يعيد السلسلة winter-is-coming.

assert(urlSlug(' Winter Is  Coming') === 'winter-is-coming');

urlSlug("A Mind Needs Books Like A Sword Needs A Whetstone") يجب أن يعيد السلسلة a-mind-needs-books-like-a-sword-needs-a-whetstone.

assert(
  urlSlug('A Mind Needs Books Like A Sword Needs A Whetstone') ===
    'a-mind-needs-books-like-a-sword-needs-a-whetstone'
);

urlSlug("Hold The Door") يجب أن يعيد السلسلة hold-the-door.

assert(urlSlug('Hold The Door') === 'hold-the-door');

--seed--

--seed-contents--

// Only change code below this line
function urlSlug(title) {


}
// Only change code above this line
urlSlug("A Mind Needs Books Like A Sword Needs A Whetstone");

--solutions--

function urlSlug(title) {
  return title.trim().split(/\s+/).join("-").toLowerCase();
}