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