Files
freeCodeCamp/curriculum/challenges/chinese/02-javascript-algorithms-and-data-structures/functional-programming/apply-functional-programming-to-convert-strings-to-url-slugs.md

2.4 KiB
Raw Permalink Blame History

id, title, challengeType, forumTopicId, dashedName
id title challengeType forumTopicId dashedName
587d7dab367417b2b2512b6d 应用函数式编程将字符串转换为URL片段 1 301227 apply-functional-programming-to-convert-strings-to-url-slugs

--description--

最后几个挑战中涵盖了许多符合函数式编程原则并在处理数组和字符串中非常有用的方法。 我们还学习了强大的、可以将问题简化为更简单形式的 reduce 方法。 从计算平均值到排序,任何数组操作都可以用它来实现。 回想一下,mapfilter 方法都是 reduce 的特殊实现。

让我们把学到的知识结合起来解决一个实际问题。

许多内容管理站点CMS为了让添加书签更简单会将帖子的标题添加到 URL 上。 举个例子,如果你写了一篇标题为 Stop Using Reduce 的帖子URL很可能会包含标题字符串的某种形式 (如:.../stop-using-reduce)。 你可能已经在 freeCodeCamp 网站上注意到了这一点。

--instructions--

填写 urlSlug 函数,将字符串 title 转换成带有连字符号的 URL。 您可以使用本节中介绍的任何方法,但不要用 replace 方法。 以下是本次挑战的要求:

输入包含空格和标题大小写单词的字符串

输出字符串,单词之间的空格用连字符 (-) 替换

输出应该是小写字母

输出不应有任何空格

--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();
}