成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

JS內(nèi)置對(duì)象-關(guān)于String字符串對(duì)象的2個(gè)小實(shí)驗(yàn)

Imfan / 706人閱讀

摘要:希望索引值之間用隔開(kāi),而最后的索引值后面無(wú)。優(yōu)化代碼這個(gè)判斷用于防止最后一個(gè)索引值后面還有結(jié)果查看其實(shí)用來(lái)跳出循環(huán)一直覺(jué)得不太規(guī)范。。。小實(shí)驗(yàn)是顯示次數(shù)其實(shí)就是那個(gè)索引值啦,這次顯示的是字符哦涉及到字符,就要用到方法。

第一篇技術(shù)文章寫(xiě)些簡(jiǎn)單點(diǎn)的~
在大三上web前端開(kāi)發(fā)課程時(shí),雖然能用JavaScript制作一些簡(jiǎn)單的頁(yè)面動(dòng)態(tài)效果,但其實(shí)很多JS知識(shí)并未掌握,所以自己又通過(guò)視頻再?gòu)?fù)習(xí)一次JS。(我的JS書(shū)籍還在來(lái)的路上,在此之前,讓我先用“在線課程”這種快餐充饑~)

JS內(nèi)置對(duì)象中String字符串對(duì)象有太多方法了,今天通過(guò)2個(gè)簡(jiǎn)單實(shí)驗(yàn),熟悉indexOf()、lastIndexOf()、charAt()3個(gè)方法的使用。

首先來(lái)看看w3school里是怎么介紹indexOf()的

語(yǔ)法:

Object(string|array).indexOf(searchValue, fromIndex);

用法:

返回某個(gè)指定的字符串值在字符串中首次出現(xiàn)的位置

兩大參數(shù):

參數(shù)1 searchValue 必需。規(guī)定需檢索的字符串值

參數(shù)2 fromIndex 可選。規(guī)定在字符串中開(kāi)始檢索的位置。它的合法取值是0到stringObject.length-1。如省略該參數(shù),則將從字符串的首字符開(kāi)始檢索。

然后學(xué)習(xí)時(shí)所給demo實(shí)在是太簡(jiǎn)單了吧。。-.-!!!


第一個(gè)由于原字符串有此一系列完整且連續(xù)的字符,于是輸出位置為6,注意空格也占一個(gè)字符位置哦~
第二個(gè)由于沒(méi)有,所以輸出-1

這里注意了~返回值是數(shù)字(索引),在后面提及的小實(shí)驗(yàn)中索引index的定義非常關(guān)鍵。

---------------小實(shí)驗(yàn)1---------------

實(shí)在接受不了如此直白的demo,于是仔細(xì)想想到底這個(gè)方法能用來(lái)做什么?
下面是一個(gè)我覺(jué)得很有效但自己卻很少用到的深入學(xué)習(xí)法
1、indexOf是找到首次出現(xiàn)的位置。。(首先多次理解這個(gè)定義)
2、那如果這是一個(gè)游戲。。(從感興趣的方向作為切入點(diǎn),聯(lián)想實(shí)際生活)
3、游戲規(guī)則是需要找出一句話中"l"字母出現(xiàn)的所有位置。。(將其具體化)

而indexOf()只會(huì)找一次,那要如何設(shè)計(jì)?

于是二話不說(shuō),幾行代碼就寫(xiě)出來(lái)了,非常的迅速!

刷新頁(yè)面一看,oh my god?。ㄏ旅媸沁\(yùn)行結(jié)果)

22222222222

這么簡(jiǎn)單的程序都不會(huì)寫(xiě),真得好好檢討一下!T.T

問(wèn)題出在哪里呢?首先是定義一個(gè)字符串str,然后for循環(huán)讓它每找到一個(gè)"l"字母就輸出該字母所在位置,但是為何每次都輸出2?

沒(méi)錯(cuò),關(guān)鍵就是那個(gè)index索引!
愚蠢的我以為i++就代表起始查找位置在后移,其實(shí)真正起作用的是索引index。
另外,還有一點(diǎn)!就是indexOf()方法中的參數(shù)2,剛才我的錯(cuò)誤代碼中,indexOf()是只有參數(shù)1的,參數(shù)2默認(rèn)為字符串首字符位置,即要從頭開(kāi)始尋找。

又沒(méi)有索引值,又每次都得從頭找,還要for循環(huán),不出現(xiàn)一堆2才怪呢~

正確做法

結(jié)果如下:

239

但是這樣并不好看,嘗試優(yōu)化。希望索引值之間用“、”隔開(kāi),而最后的索引值后面無(wú)“、”。這時(shí)需要用到indexOf()的兄弟方法lastIndexOf(),只要記住用法和indexOf()完全相反,省略參數(shù)2則從字符串最后一個(gè)字符開(kāi)始尋找,直到找到指定字符的最后出現(xiàn)位置。

優(yōu)化代碼:

結(jié)果查看:

2、3、9

其實(shí)用break來(lái)跳出循環(huán)一直覺(jué)得不太規(guī)范。。。網(wǎng)上看到有用do-while()方法感覺(jué)更好。。

PS:要注意indexOf()對(duì)大小寫(xiě)要求很高,一開(kāi)始沒(méi)留意,寫(xiě)成indexof(),一直沒(méi)效果,后來(lái)才發(fā)現(xiàn)原來(lái)o要大寫(xiě)。。香菇~ ---------------小實(shí)驗(yàn)2---------------

如果將游戲顯示簡(jiǎn)化一點(diǎn)又要怎么設(shè)計(jì)呢?現(xiàn)在已有的游戲規(guī)則是數(shù)有多少個(gè)"l"字母,然后說(shuō)出每個(gè)的位置。
現(xiàn)在增加難度,要顯示次數(shù)最多的字符。

小實(shí)驗(yàn)1是顯示次數(shù)(其實(shí)就是那個(gè)索引值啦0.0),這次顯示的是字符哦~涉及到字符,就要用到charAt()方法。

同樣的,首先在看看w3school有什么想說(shuō)的

語(yǔ)法:

stringObject.charAt(index);

用法:

返回指定位置的字符

參數(shù):

index 必需。表示字符串中某個(gè)位置的數(shù)字,即字符在字符串中的下標(biāo)。

這一次涉及到for in的用法,這里要和for循環(huán)做一個(gè)區(qū)分。

for - 循環(huán)代碼塊一定的次數(shù)
for/in - 循環(huán)遍歷對(duì)象的屬性

遍歷對(duì)象的屬性,在這次實(shí)驗(yàn)里,由于要找出哪個(gè)字符次數(shù)最多,所以要遍歷的是字符(對(duì)象)的次數(shù)(屬性)。

簡(jiǎn)單例子:

var a=["aa","bb","cc"];
for(var c in a){
    document.write(a[c]);
}

結(jié)果為:

aabbcc

在了解for in用法后開(kāi)始編寫(xiě)~
思路如下:
1、首先得創(chuàng)建一個(gè)對(duì)象obj
2、for循環(huán)時(shí)用charAt()方法把每個(gè)字符塞到char中,obj[char]相當(dāng)于“該字符的次數(shù)”
3、每次循環(huán)時(shí)更新對(duì)應(yīng)字符次數(shù)
4、定義次數(shù)最多的字符max
5、for in循環(huán)遍歷次數(shù),與obj里每個(gè)字母對(duì)應(yīng)的次數(shù)進(jìn)行比較,輸出最多次數(shù)所對(duì)應(yīng)的字符

展示各個(gè)字符及對(duì)應(yīng)的次數(shù),代碼如下:

輸出結(jié)果:

h:1 次
e:1 次
l:1 次
l:2 次
o:1 次
:1 次
w:1 次
o:2 次
r:1 次
l:3 次
d:1 次

可以說(shuō)實(shí)驗(yàn)2已經(jīng)完成了一半,接下來(lái)是for in循環(huán)遍歷次數(shù),找次數(shù)最多的出來(lái)!后續(xù)代碼如下:

var max=0;//次數(shù)最多,初始化為0,防止undefined
 var maxChar;
 for(char in obj){
     if(max次數(shù)最多的字符是"+maxChar);
 document.write("
一共出現(xiàn)了"+max+" 次");

看起來(lái)行得通,結(jié)果卻不盡如人意啊T.T

次數(shù)最多的字符是d
一共出現(xiàn)了3 次

為什么次數(shù)最多的字符是d。。。但又竟然是3次??明明d只出現(xiàn)1次,而l才是出現(xiàn)了3次。。咋就混在一起了呢。。。當(dāng)時(shí)的我竟然想笑。。。

仔細(xì)回看代碼,會(huì)發(fā)現(xiàn)if-else語(yǔ)句有點(diǎn)奇怪,按順序執(zhí)行的話,"hello world"首先是h字母次數(shù),次數(shù)為1,max

換言之,根本不需要else語(yǔ)句,當(dāng)更新max的同時(shí),也要更新maxChar,對(duì)號(hào)入座,才不會(huì)有“牛頭不搭馬嘴”這種尷尬情況的發(fā)生。。。

完整代碼如下:(由于我們要的只是最終結(jié)果,所以“列舉每個(gè)字母及對(duì)應(yīng)的次數(shù)”這一步可省略)


第一篇文章就用了我3小時(shí)。。。只想說(shuō)一句。。好累!雖然這只是JS中一個(gè)很小的知識(shí),不過(guò)還是挺有意義的~

最后感謝博客園用戶(hù)!master的這篇文章,js--找字符串中出現(xiàn)最多的字符,實(shí)在沒(méi)想到有人會(huì)和我想到一塊去了。實(shí)驗(yàn)2就是受這篇文章的啟發(fā)的。

                                                                   ————WEB前端學(xué)習(xí),需要我們多看書(shū)多敲碼多思考

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/91126.html

相關(guān)文章

  • javaScript精華與糟粕

    摘要:最近在看語(yǔ)言精粹這本書(shū),建立完整的知識(shí)體系。一關(guān)于語(yǔ)言是一門(mén)未在實(shí)驗(yàn)室打磨過(guò)的語(yǔ)言,存在這很多考慮不全面甚至,因此我們很有必要學(xué)習(xí)本書(shū),已達(dá)到去除糟粕,取其精華的效果。則為定義了,為初始化的變量。為對(duì)象,數(shù)組函數(shù)均屬于特殊的對(duì)象。 最近在看JavaScript語(yǔ)言精粹這本書(shū),建立完整的js知識(shí)體系。 一.關(guān)于JavaScript語(yǔ)言js是一門(mén)未在實(shí)驗(yàn)室打磨過(guò)的語(yǔ)言,存在這很多考慮不全面...

    mayaohua 評(píng)論0 收藏0
  • 重學(xué)前端學(xué)習(xí)筆記(九)--JavaScript中對(duì)象分類(lèi)

    摘要:固有對(duì)象由標(biāo)準(zhǔn)規(guī)定,隨著運(yùn)行時(shí)創(chuàng)建而自動(dòng)創(chuàng)建的對(duì)象實(shí)例。普通對(duì)象由語(yǔ)法構(gòu)造器或者關(guān)鍵字定義類(lèi)創(chuàng)建的對(duì)象,它能夠被原型繼承。 筆記說(shuō)明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時(shí)間開(kāi)的一個(gè)專(zhuān)欄,每天10分鐘,重構(gòu)你的前端知識(shí)體系,筆者主要整理學(xué)習(xí)過(guò)程的一些要點(diǎn)筆記以及感悟,完整的可以加入winter的專(zhuān)欄學(xué)習(xí)【原文有winter的語(yǔ)音】,如有侵權(quán)請(qǐng)聯(lián)系我,郵箱:ka...

    ShowerSun 評(píng)論0 收藏0
  • 重學(xué)前端學(xué)習(xí)筆記(九)--JavaScript中對(duì)象分類(lèi)

    摘要:固有對(duì)象由標(biāo)準(zhǔn)規(guī)定,隨著運(yùn)行時(shí)創(chuàng)建而自動(dòng)創(chuàng)建的對(duì)象實(shí)例。普通對(duì)象由語(yǔ)法構(gòu)造器或者關(guān)鍵字定義類(lèi)創(chuàng)建的對(duì)象,它能夠被原型繼承。 筆記說(shuō)明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時(shí)間開(kāi)的一個(gè)專(zhuān)欄,每天10分鐘,重構(gòu)你的前端知識(shí)體系,筆者主要整理學(xué)習(xí)過(guò)程的一些要點(diǎn)筆記以及感悟,完整的可以加入winter的專(zhuān)欄學(xué)習(xí)【原文有winter的語(yǔ)音】,如有侵權(quán)請(qǐng)聯(lián)系我,郵箱:ka...

    tinna 評(píng)論0 收藏0
  • 重學(xué)前端學(xué)習(xí)筆記(九)--JavaScript中對(duì)象分類(lèi)

    摘要:固有對(duì)象由標(biāo)準(zhǔn)規(guī)定,隨著運(yùn)行時(shí)創(chuàng)建而自動(dòng)創(chuàng)建的對(duì)象實(shí)例。普通對(duì)象由語(yǔ)法構(gòu)造器或者關(guān)鍵字定義類(lèi)創(chuàng)建的對(duì)象,它能夠被原型繼承。 筆記說(shuō)明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時(shí)間開(kāi)的一個(gè)專(zhuān)欄,每天10分鐘,重構(gòu)你的前端知識(shí)體系,筆者主要整理學(xué)習(xí)過(guò)程的一些要點(diǎn)筆記以及感悟,完整的可以加入winter的專(zhuān)欄學(xué)習(xí)【原文有winter的語(yǔ)音】,如有侵權(quán)請(qǐng)聯(lián)系我,郵箱:ka...

    dantezhao 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<