這篇文章主要介紹“javascript有哪些循環(huán)語(yǔ)句”,在日常操作中,相信很多人在javascript有哪些循環(huán)語(yǔ)句問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”javascript有哪些循環(huán)語(yǔ)句”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),翁源企業(yè)網(wǎng)站建設(shè),翁源品牌網(wǎng)站建設(shè),網(wǎng)站定制,翁源網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,翁源網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
循環(huán)語(yǔ)句有:1、for循環(huán);2、“for...in”循環(huán);3、while循環(huán);4、“do…while”循環(huán);5、forEach循環(huán);6、map;7、filter過(guò)濾循環(huán);8、“Object.keys”遍歷對(duì)象的屬性。
本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。
項(xiàng)目開發(fā)中,不管是建立在哪個(gè)框架基礎(chǔ)上,對(duì)數(shù)據(jù)的處理都是必須的,而處理數(shù)據(jù)離不開各種遍歷循環(huán)。javascript中循環(huán)遍歷有很多種方式,記錄下幾種常見的js循環(huán)遍歷。
一、for循環(huán)
for 語(yǔ)句主要用于執(zhí)行確定執(zhí)行次數(shù)的循環(huán)。
for 語(yǔ)句的基本語(yǔ)法如下:
for([初始值表達(dá)式];[條件表達(dá)式];[增量表達(dá)式]){ 循環(huán)體語(yǔ)句; }
說(shuō)明:
“初始值表達(dá)式”:為循環(huán)變量設(shè)置初始值;
“條件表達(dá)式”:作為是否進(jìn)入循環(huán)的依據(jù),可以是任意表達(dá)式,但一般為關(guān)系表達(dá)式或邏輯表達(dá)式,取值為真或假。每次要執(zhí)行循環(huán)之前,都會(huì)進(jìn)行條件表達(dá)式值的判斷。如果值為真(值為 true 或非 0 或非空),則執(zhí)行循環(huán)體語(yǔ)句;否則就退出循環(huán)并執(zhí)行循環(huán)語(yǔ)句后面的代碼;
“增量表達(dá)式”:根據(jù)此表達(dá)式更新循環(huán)變量的值。
上述 3 個(gè)表達(dá)式中的任意一個(gè)都可以省略,但需要注意的是,for() 中的;不可以省略。所以如果 3 個(gè)表達(dá)式都省略時(shí),for 語(yǔ)句變?yōu)椋篺or(;;){循環(huán)體語(yǔ)句}。此時(shí)需要注意的是,如果循環(huán)體內(nèi)沒有退出循環(huán)的語(yǔ)句,將會(huì)進(jìn)入死循環(huán)。
示例:
var sum = 0; for(var i = 1; i <= 100;i++){ //在for語(yǔ)句中使用var聲明循環(huán)變量,使代碼更簡(jiǎn)潔 sum += i; } alert("1~100的累加和sum=" + sum);
二、for...in
for...in循環(huán)主要針對(duì)于對(duì)象的遍歷,當(dāng)想要獲取對(duì)象的對(duì)應(yīng)鍵值時(shí),使用for...in還是比較方便的
var a = [1, 2, ,,,,,,true,,,,,,, "a",,,,,,,,,,,,,,,4,,,,,56,,,,,,"b"]; //定義數(shù)組 var b = [], num = 0; for (var i = 0; i < a.length; i ++) { //遍歷數(shù)組 if (typeof a[i] == "number") //如果為數(shù)字,則返回該元素的值 b.push(a[i]); num ++; //計(jì)數(shù)器 } console.log(num); //返回42,說(shuō)明循環(huán)了42次 console.log(b); //返回[1,2,4,56]
三、while循環(huán)
while 語(yǔ)句是最常用的一種循環(huán)語(yǔ)句,在程序中常用于只需根據(jù)條件執(zhí)行循環(huán)而不需關(guān)心循環(huán)次數(shù)的情況。
while 語(yǔ)句的基本語(yǔ)法如下: while(條件表達(dá)式){ 循環(huán)體; }
說(shuō)明:
條件表達(dá)式:為循環(huán)控制條件,必須放在圓括號(hào)中,可以是任意表達(dá)式,但一般為關(guān)系表達(dá)式或邏輯表達(dá)式,取值為真或假。注意:值為 true、非 0、非空的都是真值,反之則為假值。
循環(huán)體:代表需要重復(fù)執(zhí)行的操作,可以是簡(jiǎn)單語(yǔ)句,也可以是復(fù)合語(yǔ)句。當(dāng)為簡(jiǎn)單語(yǔ)句時(shí),可以省略大括號(hào){},否則必須使用大括號(hào){}。
while 語(yǔ)句在執(zhí)行時(shí),首先判斷條件表達(dá)式的值,如果為真,則執(zhí)行循環(huán)體語(yǔ)句,然后再對(duì)條件表達(dá)式進(jìn)行判斷,如果值還是為真,則繼續(xù)執(zhí)行循環(huán)體語(yǔ)句;否則執(zhí)行 while 語(yǔ)句后面的語(yǔ)句。如果表達(dá)式的值在第一次判斷就為假(為 false 或 0 或?yàn)?null 等值),則一次也不會(huì)執(zhí)行循環(huán)體。
需要注意的是,為了使 while 循環(huán)能正常結(jié)束,循環(huán)體內(nèi)應(yīng)該有修改循環(huán)條件的語(yǔ)句或其他終止循環(huán)的語(yǔ)句,否則 while 循環(huán)將進(jìn)入死循環(huán),即會(huì)一直循環(huán)不斷地執(zhí)行循環(huán)體。
例如,下面的循環(huán)語(yǔ)句就會(huì)造成死循環(huán)。
var i=1,s=0; whiel(i<=5){ s+=i; }
上述代碼中 i 的初始值為 1,由于循環(huán)體內(nèi)沒有修改 i 變量的值,所以表達(dá)式 i<=5 永遠(yuǎn)為真,因而循環(huán)體會(huì)一直執(zhí)行。
死循環(huán)會(huì)極大地占用系統(tǒng)資源,最終有可能導(dǎo)致系統(tǒng)崩潰,所以我們編程時(shí)一定要注意避免死循環(huán)。
var sum = 1, i = 1; var ex = 1; while(sum <= 1.5){ sum += 1/((i + 1)*(i + 1)); if(sum > 1.5) break; i++; ex +=" + 1/(" + i + "*" + i + ")"; } alert("表達(dá)式的值小于等于1.5時(shí)的i=" + i + ",對(duì)應(yīng)的表達(dá)式為:" + ex);
四、do…while循環(huán)
do…while 語(yǔ)句是 while 語(yǔ)句的變形。兩者的區(qū)別在于,while 語(yǔ)句把循環(huán)條件判斷放在循環(huán)體語(yǔ)句執(zhí)行的前面,而 do…while 語(yǔ)句則把循環(huán)條件判斷放在循環(huán)體語(yǔ)句執(zhí)行的后面。
do…while 語(yǔ)句的基本語(yǔ)法如下:
do{ 循環(huán)體; }while (條件表達(dá)式);
“條件表達(dá)式”和“循環(huán)體”的含義與 while 語(yǔ)句的相同。在此需要注意的是,do…while 語(yǔ)句最后需要使用;結(jié)束,如果代碼中沒有加上;,則 JavaScript 會(huì)自動(dòng)補(bǔ)上。
do…while 語(yǔ)句在執(zhí)行時(shí),首先執(zhí)行循環(huán)體語(yǔ)句,然后再判斷條件表達(dá)式的值,如果值為真(值為 true 或非 0 值),則再次執(zhí)行循環(huán)體語(yǔ)句。do…while 語(yǔ)句至少會(huì)執(zhí)行一次循環(huán)體,這一點(diǎn)和 while 語(yǔ)句有顯著的不同。
var sum = 1, i = 1; var ex = 1; do{ sum += 1/((i + 1)*(i + 1)); if(sum > 1.5) break; i++; ex +=" + 1/(" + i + "*" + i + ")"; }while(sum <= 1.5); alert("表達(dá)式的值小于等于1.5時(shí)的i=" + i + ",對(duì)應(yīng)的表達(dá)式為:" + ex);
五、forEach
forEach的使用方法和map使用方法差不多,只是forEach方法不返回值,只用來(lái)操作數(shù)據(jù),且循環(huán)中途是無(wú)法停止的,總是會(huì)將所有成員遍歷完
let arrObj = [{ id: 1, name: 'xiaohua' },{ id:2, name: 'xiaomin' },{ id:3, name: 'xiaobai' }] arrObj.forEach((item,index,arr)=>{ console.log(arr) // arrObj console.log(index) // 0 1 2 console.log(item.name) // xiaohua xiaomin xiaobai })
六、map
map方法將數(shù)組的所有成員依次傳入?yún)?shù)函數(shù),然后把每一次的執(zhí)行結(jié)果組成一個(gè)新數(shù)組返回。循環(huán)中途是無(wú)法停止的,總是會(huì)將所有成員遍歷完
let arr = [1,2,3,4,5] let arr2 = arr.map((n)=>{ return n+1 }) console.log(arr2) // [2,3,4,5,6] console.log(arr) // [1,2,3,4,5]
map方法接受一個(gè)函數(shù)作為參數(shù)。該函數(shù)調(diào)用時(shí),map方法向它傳入三個(gè)參數(shù):當(dāng)前成員、當(dāng)前位置和數(shù)組本身。
let arrObj = [{ id: 1, name: 'xiaohua' },{ id:2, name: 'xiaomin' },{ id:3, name: 'xiaobai' }] arrObj.map((item,index,arr)=>{ console.log(arr) // arrObj console.log(index) // 0 1 2 console.log(item.name) // xiaohua xiaomin xiaobai })
七、filter過(guò)濾循環(huán)
filter方法用于過(guò)濾數(shù)組成員,滿足條件的成員組成一個(gè)新數(shù)組返回。它的參數(shù)是一個(gè)函數(shù),所有數(shù)組成員依次執(zhí)行該函數(shù),返回結(jié)果為true的成員組成一個(gè)新數(shù)組返回。該方法不會(huì)改變?cè)瓟?shù)組。
let arrObj = [{ id: 1, name: 'xiaohua' },{ id:2, name: 'xiaomin' },{ id:3, name: 'xiaobai' }] let arr2 = arrObj.filter((item,index,arr)=>{ return (item.name === 'xiaohua') }) console.log(arr2) // [{id:1,name:'xiaohua}]
ECMAScirpt5 中 Array 類中的 filter 方法使用目的是移除所有的 ”false“ 類型元素 (false
, null
, undefined
, 0
, NaN
or an empty string):
let arr = [3, 4, 5, 2, 3, undefined, null, 0, ""]; let arrNew = arr.filter(Boolean); console.log(arrNew) // [3, 4, 5, 2, 3]
Boolean 是一個(gè)函數(shù),它會(huì)對(duì)遍歷數(shù)組中的元素,并根據(jù)元素的真假類型,對(duì)應(yīng)返回 true 或 false.
八、Object.keys遍歷對(duì)象的屬性
Object.keys
方法的參數(shù)是一個(gè)對(duì)象,返回一個(gè)數(shù)組。該數(shù)組的成員都是該對(duì)象自身的(而不是繼承的)所有屬性名,且只返回可枚舉的屬性。
let obj = {name: 'xiaohua', sex: 'male', age: '28'} console.log(Object.keys(obj)) // ["name", "sex", "age"]
判斷一個(gè)對(duì)象是否是空對(duì)象,可以用Object.keys(obj).length>0
到此,關(guān)于“javascript有哪些循環(huán)語(yǔ)句”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
名稱欄目:javascript有哪些循環(huán)語(yǔ)句
URL分享:http://vcdvsql.cn/article0/pdegoo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、品牌網(wǎng)站制作、標(biāo)簽優(yōu)化、網(wǎng)站設(shè)計(jì)公司、網(wǎng)頁(yè)設(shè)計(jì)公司、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)