向着6级跑出的第三步
在文章任何区域双击击即可给文章添加【评注】!浮到评注点上可以查看详情。

Description:

Complete the solution so that it splits the string into pairs of two characters. If the string contains an odd number of characters then it should replace the missing second character of the final pair with an underscore (’_’).

Examples:

solution('abc') // should return ['ab', 'c_']
solution('abcdef') // should return ['ab', 'cd', 'ef']

菜鸟出招

function solution(str){
  str = str.split('');
  var a = [];
   for (var i = str.length/2 - 1;i > 0;i--) {
     a.push(str.shift() + str.shift());
   }
   a.push(str.shift() + ((str.length)? str.shift(): '_'));
   return a;
}

菜鸟思维

  1. 字符串转化为数组(元素为单字符)
  2. 将数组元素两两连接为字符串,不足后补_
  3. 将新字符串push入新数组

偷师学艺

function solution(str){
   str=str.length%2?str+'_':str;
   return str.match(/.{1,2}/g);
}

关键字积累

  • match

正则分析

/.{1,2}/g

  • . 匹配除换行符以外的任意字符
  • {n, m} 重复n到m次
  • /g 全局

根据题意,返回数组中的字符串元素肯定是2个元素,所以 /.{1,2}/g 可以简化为 /.{2}/g

菜鸟反思

原来不知道有macth这么霸气的方法,结合正则表达式,把字符串中想要的片段截取出来放入数组,简单方便。

评论
发表评论
暂无评论
WRITTEN BY
BoltDoggy
A doggy named Bolt.
TA的新浪微博
PUBLISHED IN
My Code Wars 我的代码战争【休息一下】

这里讲述的是一个8级(kyu)菜鸟立志成为8段(dan)大神的故事。

他在代码战争中一次次遭遇挫败,而又在乱炖中获得高人指点。

遥想当年自高自大,而今终知天外有天。

坚持要走出一条自己的路,这是一条不归路。


Bolt 在写underscore.js源码分析专栏的时候发现了一个问题,就是看别人写的代码的时候自认为看懂了,但实际上有理解错误自己也不知道。

另外就是看了再牛逼的代码,自己写的时候,还是那些小套套。

于是 Bolt 开了一个新专栏:My Code Wars 我的代码战争。在同一需求下,菜鸟写的代码与大神有什么区别,是思维方式不同,还是什么原因导致的?

欢迎大家来新专栏提供意见和建议。

我的收藏