您好,欢迎来到二三娱乐。
搜索
您的当前位置:首页FreeCodeCamp筆記之:Pig Latin

FreeCodeCamp筆記之:Pig Latin

来源:二三娱乐

题目

思路

  • 看起来是一个文字游戏,外国人的文字游戏也挺好玩的;
  • 不过恕我文盲,辅音和辅音丛是神马玩意,还有元音.....看来要动用 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<str.length){  
    if(y.indexOf(str[i])=== -1){ // indexOf 比较结果为 -1时,则说明不存在,即当前比较的字母不为元音;
      i++;  // 记录辅音丛长度
    }
    else{
      break;
    }
  }
  if(i===0){
    return str+"way";    //元音开头
  }
   else{
    return str.substr(i)+str.substr(0,i)+"ay";    //辅音丛开头
  }
  return a;
}

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

Copyright © 2019- yule263.com 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务