codewars闯关小记录之一:首字母大写

2015-01-02  本文已影响272人  叶猜

写在前头

--------话说作为一枚小前端,也应该了解一些后端语言嚯!(ง •̀_•́)ง--------

好吧,那就搞起呗(*ノ▽ノ)


请听题!

一、创建一个方法来接收数组,并返回值为首字母为大写,其余字母小写的数组。

Create a method that accepts an array of names, and returns an array of each name 
with its first letter capitalized.
example

capMe(['jo', 'nelson', 'jurie'])     // returns ['Jo', 'Nelson', 'Jurie']
capMe(['KARLY', 'DANIEL', 'KELSEY']) // returns ['Karly', 'Daniel', 'Kelsey']

( 」゚Д゚)」<

function capMe(names) {
  for (var i = 0; i < names.length; i++){
    var firstLetter = names[i].charAt(0).toUpperCase();
    var remainLetter = names[i].slice(1).toLowerCase();
    names[i] = firstLetter + remainLetter;
    names = names.slice();
  }
  return(names);
}

中间用了concat()来传递字符串,然后写错了一些代码,结果就在数组末尾多了一个undefined
WHY!!!(ಥ_ಥ)
不过!终于通过了!(・∀・)
然后,我就提交了,再然后,就可以看到一些大师的代码(#/。\#)
看完感觉写了好多废代码的说,虽然通过了还是有点小问题,看了别人的代码以后自己改进了一下。

function capMe(names) {
  for (var i = 0; i < names.length; i++){
    names[i] = names[i].charAt(0).toUpperCase() + names[i].slice(1).toLowerCase();
  }
  return(names);
}

然后,想了想,应该也可以用传说中吊吊的正则,不过,这个暂时放后吧,不大懂不大懂。

 function capMe(names) {
  for (i = 0; i < names.length; i++)
  {
    names[i] = names[i].toLowerCase();
    names[i] = names[i].substring(0, 1).toUpperCase() + names[i].substring(1, names[i].length);
  }
  return names;
 }
function capMe(names) {
   return names.map(function(name) {
      return name[0].toUpperCase() + name.slice(1).split('').map(function(elem, index) {
         return elem.toLowerCase();
      }).join('');
   });
}
function capMe(names) {
  return names.map(
    function (n) { return n.charAt(0).toUpperCase() + n.substring(1).toLowerCase();
 });
}

为什么这么短!!! _(:з」∠)_

容我仔细瞅瞅,哎哟喂~思路跟我一样嘛((」゚ペ)」这很正常吧)
看来我很有当大神的潜质嘛!(凑不要脸)_

这么多人用map!醉了醉了醉了!
我要翻翻我的《J高》了(Σ(っ °Д °;)っ你刚刚写代码的时候不是一直在翻吗!!)

⊙︿⊙没找到

那就只好谷歌一下了。
这就是map() 的介绍啦。

打不开的我把相关介绍附在后面了(๑´ㅂ`๑)
看他们举的例子就造了(map()相当于把数组的每个元素的值,以及索引,以及数组本身都传了进去)

function fuzzyPlural(single) {
  var result = single.replace(/o/g, 'e');  
  if( single === 'kangaroo'){
    result += 'se';
  }
  return result; 
}

var words = ["foot", "goose", "moose", "kangaroo"];
console.log(words.map(fuzzyPlural));

// ["feet", "geese", "meese", "kangareese"]

很炫酷的样子嘛。

话说Jquery也有个map(),这两者有啥不同吗?

JQuery map()

定义和用法

map() 把每个元素通过函数传递到当前匹配集合中,生成包含返回值的新的 jQuery 对象。

语法

.map(callback(index,domElement))

参数

callback(index,domElement)

描述

对当前集合中的每个元素调用的函数对象。

对比一下上下这俩解释,差不多嘛(・∀・)就是JQ中不返回数组本身罢了。

Array.prototype.map()

概述

map() 方法返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组。

语法

array.map(callback[, thisArg])

参数

原数组中的元素经过该方法后返回一个新的元素。

callback 的第一个参数,数组中当前被传递的元素。

callback 的第二个参数,数组中当前被传递的元素的索引。

callback 的第三个参数,调用 map 方法的数组。

执行 callback 函数时 this 指向的对象。

描述

那今天就写到这啦。

晚安么么哒(ノ´∀`*)ノ

补一句:自己写完看别人的代码,感慨万千,写法千千万啊( ̄(エ) ̄)ゞ

上一篇下一篇

猜你喜欢

热点阅读