FreeCodeCamp筆記之:Pig Latin

题目

把指定的字符串翻译成 pig latin。
Pig Latin 把一个英文单词的第一个辅音或辅音丛(consonant cluster)移到词尾,然后加上后缀 "ay"。
如果单词以元音开始,你只需要在词尾添加 "way" 就可以了。
如果你被难住了,记得使用 Read-Search-Ask尝试与他人结伴编程、编写你自己的代码。
这是一些对你有帮助的资源:
Array.indexOf()
Array.push()
Array.join()
String.substr()
String.split()

思路

  • 看起来是一个文字游戏,外国人的文字游戏也挺好玩的;
  • 不过恕我文盲,辅音和辅音丛是神马玩意,还有元音.....看来要动用 Read大法了;
  • Read 大法好啊,大概有4种情况:
    *1. 第一个字母是辅音,比如:lay、car、bus...,就把第一个字母加上 ay 移动到单词末尾,变成 aylay、arcay、usbay;
    *2. 前几个字母都是辅音(辅音丛),比如:Chrome、fly、play,就把前几个辅音都 加上 ay 移动到单子末尾,变成 omeChray、yflay、ayplay;
    *3.第一个字母是元音,比如:away、alarm、omelet,就把单词直接加上 way,变成 awayway、alarmway、omeletway;
    *4.单词中有多个元音音节的,比如:island、every、under,依元音分节,把第一节加上 ay 移动到单词末尾,变成 andislay、eryevay、erunday;
  • 看题目只要求了1、2、3 三种情况;
  • 因此第一步可以先定义一个变量存放所有元音字母;
  • 第二步顺序检查str的字符,是用 indexOf() 检查字符是否存在第一个变量中,得出辅音从的长度存入变量 i;碰到第一个元音时,循环结束,得出辅音从长度;
  • 最后判断:如果辅音从长度为i=0,则直接加上 way;否则str 截取 i之后的字符加上 i之前的字符再加上 ay;

解答

function translate(str) { 
  var y=['a','e','i','o','u']; //定义元音 
  var i=0; //保存辅音丛的长度
  while(i

这一节主要是indexOf(),还有substr()的用法;
一开始对substr不熟,没想到截取怎么做,硬是将循环的字符一个个的 分别存入2个变量,然后用join来拼接,最终结果出现错误,找了半天没找出错误在哪,后来看到题目推荐的 substr,感觉这个应该是可以用上,仔细阅读发现果然可以;
还是要仔细学习题目推荐的所有函数,有大用!

你可能感兴趣的:(FreeCodeCamp筆記之:Pig Latin)