成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

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

Imfan / 767人閱讀

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

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

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

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

語法:

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

用法:

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

兩大參數(shù):

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

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

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


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

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

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

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

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

于是二話不說,幾行代碼就寫出來了,非常的迅速!


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

22222222222

這么簡單的程序都不會寫,真得好好檢討一下!T.T

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

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

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

正確做法

結(jié)果如下:

239

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

優(yōu)化代碼:


結(jié)果查看:

2、3、9

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

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

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

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

同樣的,首先在看看w3school有什么想說的

語法:

stringObject.charAt(index);

用法:

返回指定位置的字符

參數(shù):

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

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

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

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

簡單例子:

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

結(jié)果為:

aabbcc

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

展示各個字符及對應(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 次

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

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

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

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

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

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

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

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


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

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

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

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

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/91126.html

相關(guān)文章

  • javaScript精華與糟粕

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

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

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

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

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

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

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

    dantezhao 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<