codewars闖關(guān)小記錄:首字母大寫

寫在前頭

  • 身為一個(gè)JS學(xué)渣徽千,每天都在冥思苦想怎么變成一個(gè)大師双抽,在看到“學(xué)一門后端語言闲礼,有助于進(jìn)階Js水平”這類話后,開始興沖沖地學(xué)習(xí)后端語言
    (怎么說前端后端真的差很多啊(′?_?`)后端輸出好少嚶嚶嬰慎菲,暫時(shí)感受不到成就感的說)
    (一天打漁锨并,一星期曬網(wǎng)中)
    (認(rèn)真過一遍《JS高級(jí)程序設(shè)計(jì)》才是正途吧呀喂\(`0′)/)。

--------話說作為一枚小前端第煮,也應(yīng)該了解一些后端語言嚯!(? ??_??)?--------

  • 言歸正傳撵摆,不知為啥雖然看不下那么厚一本《J高》台汇,但是還是要有點(diǎn)追求啊9赌拧牵素!
  • 于是某天,我發(fā)現(xiàn)了Codewars!
  • Codewars是啥笆呆?看標(biāo)題(? ̄▽ ̄)? 就是各類代碼的小測(cè)試小闖關(guān)啦
  • 臥槽!搞起俄精!

好吧榕堰,那就搞起唄(*?▽?)


請(qǐng)聽題!

一圾旨、創(chuàng)建一個(gè)方法來接收數(shù)組魏蔗,并返回值為首字母為大寫,其余字母小寫的數(shù)組廓鞠。

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']

( ??Д?)?<

  • 碎碎念部分:作為一個(gè)渣谣旁,第一個(gè)想法就是蔓挖,so easy馆衔,恩怨绣,先把值拆成兩部分拷获,第一個(gè)部分就是首字母啦,然后把它變成大寫噠赢笨,剩下都變成小寫噠驮吱,恩,直觀又簡(jiǎn)單桐筏!搞起呀拇砰!
  • 涉及到的方法等:
  • toUpperCase()轉(zhuǎn)換為大寫
  • toLowerCase()轉(zhuǎn)換為小寫
  • charAt()返回給定位置的單個(gè)字符串(從0個(gè)開始算就不說啦┐(‘~`;)┌)
  • slice(3,7)返回給定位置開始的字符串
    (如果有兩個(gè)值牧氮,就是給定位置之間字符串瑰枫,這里給的就是返回第4~7這四位字符串)
    (注意:slice()計(jì)算位置包括空格饮寞,若要不包括教馆,要使用substring()
    (我們這邊暫時(shí)用啥都可以啦,因?yàn)榻鹤蹋瑳]有空格嘛(≧?≦)/)
  • 我的代碼:
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()來傳遞字符串悲敷,然后寫錯(cuò)了一些代碼后德,結(jié)果就在數(shù)組末尾多了一個(gè)undefined
WHY!@碚拧!(?_?)
不過雾叭!終于通過了!(???)
然后暂幼,我就提交了移迫,再然后,就可以看到一些大師的代碼(#/鹰服。\#)
看完感覺寫了好多廢代碼的說揽咕,雖然通過了還是有點(diǎn)小問題亲善,看了別人的代碼以后自己改進(jìn)了一下。

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

然后顿肺,想了想渣蜗,應(yīng)該也可以用傳說中吊吊的正則,不過讼昆,這個(gè)暫時(shí)放后吧骚烧,不大懂不大懂。

  • 先來個(gè)版本既峡,這是先都小寫再首字母大寫碧查,substring里面的names[i].length可以去了
 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;
 }
  • 再來個(gè)版本,倆map也是暈了
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();
 });
}

為什么這么短4荨!! _(:з」∠)_

容我仔細(xì)瞅瞅愿汰,哎喲喂~思路跟我一樣嘛((」?ヘ?)」這很正常吧)
看來我很有當(dāng)大神的潛質(zhì)嘛乐纸!(湊不要臉??)_

這么多人用map!醉了醉了醉了!
我要翻翻我的《J高》了(Σ(っ °Д °;)っ你剛剛寫代碼的時(shí)候不是一直在翻嗎B鸢稀D选)

⊙︿⊙沒找到

那就只好谷歌一下了。
這就是map() 的介紹啦疆拘。

打不開的我把相關(guān)介紹附在后面了(?′?`?)
看他們舉的例子就造了(map()相當(dāng)于把數(shù)組的每個(gè)元素的值寂曹,以及索引隆圆,以及數(shù)組本身都傳了進(jìn)去)

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也有個(gè)map()旨涝,這兩者有啥不同嗎阶女?

JQuery map()

定義和用法

map() 把每個(gè)元素通過函數(shù)傳遞到當(dāng)前匹配集合中,生成包含返回值的新的 jQuery 對(duì)象衬鱼。

語法

.map(callback(index,domElement))

參數(shù)

callback(index,domElement)

描述

對(duì)當(dāng)前集合中的每個(gè)元素調(diào)用的函數(shù)對(duì)象憔杨。

對(duì)比一下上下這倆解釋,差不多嘛(???)就是JQ中不返回?cái)?shù)組本身罷了抛蚤。

Array.prototype.map()

概述

map() 方法返回一個(gè)由原數(shù)組中的每個(gè)元素調(diào)用一個(gè)指定方法后的返回值組成的新數(shù)組。

語法

array.map(callback[, thisArg])

參數(shù)

  • callback

原數(shù)組中的元素經(jīng)過該方法后返回一個(gè)新的元素朋沮。

  • currentValue

callback 的第一個(gè)參數(shù)缀壤,數(shù)組中當(dāng)前被傳遞的元素塘慕。

  • index

callback 的第二個(gè)參數(shù),數(shù)組中當(dāng)前被傳遞的元素的索引条篷。

  • array

callback 的第三個(gè)參數(shù)蛤织,調(diào)用 map 方法的數(shù)組。

  • thisArg

執(zhí)行 callback 函數(shù)時(shí) this 指向的對(duì)象稚瘾。

描述

  • map 方法會(huì)給原數(shù)組中的每個(gè)元素都按順序調(diào)用一次 callback 函數(shù)姚炕。callback 每次執(zhí)行后的返回值組合起來形成一個(gè)新數(shù)組。 callback 函數(shù)只會(huì)在有值的索引上被調(diào)用些椒;那些從來沒被賦過值或者使用 delete 刪除的索引則不會(huì)被調(diào)用掸刊。
  • callback 函數(shù)會(huì)被自動(dòng)傳入三個(gè)參數(shù):數(shù)組元素忧侧,元素索引,原數(shù)組本身蚓炬。
  • 如果 thisArg 參數(shù)有值肯夏,則每次 callback 函數(shù)被調(diào)用的時(shí)候犀暑,this 都會(huì)指向 thisArg 參數(shù)上的這個(gè)對(duì)象烁兰。如果省略了 thisArg 參數(shù),或者賦值為 null 或 undefined沪斟,則 this 指向全局對(duì)象 。
  • map 不修改調(diào)用它的原數(shù)組本身(當(dāng)然可以在 callback 執(zhí)行時(shí)改變?cè)瓟?shù)組)主之。
  • 當(dāng)一個(gè)數(shù)組運(yùn)行 map 方法時(shí)杀餐,數(shù)組的長(zhǎng)度在調(diào)用第一次 callback 方法之前就已經(jīng)確定朱巨。在 map 方法整個(gè)運(yùn)行過程中,不管 callback 函數(shù)中的操作給原數(shù)組是添加還是刪除了元素琼讽。map 方法都不會(huì)知道洪唐,如果數(shù)組元素增加凭需,則新增加的元素不會(huì)被 map 遍歷到,如果數(shù)組元素減少粒蜈,則 map 方法還會(huì)認(rèn)為原數(shù)組的長(zhǎng)度沒變枯怖,從而導(dǎo)致數(shù)組訪問越界。如果數(shù)組中的元素被改變或刪除肿轨,則他們被傳入 callback 的值是 map 方法遍歷到他們那一刻時(shí)的值蕊程。

那今天就寫到這啦。

晚安么么噠(?′?`*)?

補(bǔ)一句:自己寫完看別人的代碼槐沼,感慨萬千,寫法千千萬啊( ̄(エ) ̄)ゞ

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末纽窟,一起剝皮案震驚了整個(gè)濱河市臂港,隨后出現(xiàn)的幾起案子视搏,更是在濱河造成了極大的恐慌,老刑警劉巖佑力,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件打颤,死亡現(xiàn)場(chǎng)離奇詭異漓滔,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)透且,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門秽誊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來琳骡,“玉大人,你說我怎么就攤上這事棍厌∈” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)憎亚。 經(jīng)常有香客問我,道長(zhǎng)蝶锋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮躯舔,結(jié)果婚禮上粥庄,老公的妹妹穿的比我還像新娘。我一直安慰自己惜互,他們只是感情好载佳,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開白布蔫慧。 她就那樣靜靜地躺著权薯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪黍析。 梳的紋絲不亂的頭發(fā)上屎开,一...
    開封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天奄抽,我揣著相機(jī)與錄音,去河邊找鬼额划。 笑死档泽,一個(gè)胖子當(dāng)著我的面吹牛揖赴,可吹牛的內(nèi)容都是我干的抑胎。 我是一名探鬼主播圆恤,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼羽历!你這毒婦竟也來了淡喜?” 一聲冷哼從身側(cè)響起炼团,我...
    開封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤瘟芝,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后锌俱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年诫龙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鲫咽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖寓落,靈堂內(nèi)的尸體忽然破棺而出伶选,到底是詐尸還是另有隱情尖昏,我是刑警寧澤构资,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站吐绵,受9級(jí)特大地震影響迹淌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜己单,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一唉窃、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧纹笼,春花似錦纹份、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至笋额,卻和暖如春元暴,著一層夾襖步出監(jiān)牢的瞬間兄猩,已是汗流浹背茉盏。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留厦滤,地道東北人援岩。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓歼狼,卻偏偏與公主長(zhǎng)得像掏导,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子羽峰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容