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

資訊專欄INFORMATION COLUMN

關(guān)于JS循環(huán)遍歷

eternalshallow / 1518人閱讀

摘要:關(guān)于循環(huán)遍歷寫下這篇文章的目的,主要是想總結(jié)一下關(guān)于對于集合對象遍歷的方式方法,以及在實際應(yīng)用場景中怎樣去使用它們。的作用主要是去遍歷對象的可枚舉屬性。例如索引,數(shù)值打印結(jié)果為當(dāng)?shù)诙棽粷M足條件式跳出循環(huán),返回。

關(guān)于JS循環(huán)遍歷

寫下這篇文章的目的,主要是想總結(jié)一下關(guān)于JS對于集合對象遍歷的方式方法,以及在實際應(yīng)用場景中怎樣去使用它們。本文會主要介紹:while,for,forEach,every,some,filter,reduce,map,indexOf...

while/do while

while、do while主要的功能是,當(dāng)滿足while后邊所跟的條件時,來執(zhí)行相關(guān)業(yè)務(wù)。這兩個的區(qū)別是,while會先判斷是否滿足條件,然后再去執(zhí)行花括號里面的任務(wù),而do while則是先執(zhí)行一次花括號中的任務(wù),再去執(zhí)行while條件,判斷下次還是否再去執(zhí)行do里面的操作。也就是說 do while至少會執(zhí)行一次操作,生產(chǎn)中這個就可能用的比較少了,因為他與接下來要講的for循環(huán)相比,個人覺得可讀性上差了一點。

while(條件){
執(zhí)行...
}
------------
do{
執(zhí)行...
}
while(條件)
for
for (語句 1; 語句 2; 語句 3)
  {
  被執(zhí)行的代碼塊
  }

語句 1 在循環(huán)(代碼塊)開始前執(zhí)行

語句 2 定義運行循環(huán)(代碼塊)的條件

語句 3 在循環(huán)(代碼塊)已被執(zhí)行之后執(zhí)行

這個就不贅述了,也比較好理解,主要聊一下for...in/for...of這兩個東西。

for...in

for...in的作用主要是去遍歷對象的可枚舉屬性。即

 var foo = {
                name: "bar",
                sex: "male"
            }
            Object.defineProperty(foo, "age", { value : 18})
            for(var a in foo){
                console.log(`可枚舉屬性:${a}`)
            }
            console.log(`age屬性:${foo.age}`)

因為Object.defineProperty,建立的屬性,默認(rèn)不可枚舉,因此在瀏覽器中打印的結(jié)果為:

在JS當(dāng)中,數(shù)組也算作對象,但一般不推薦把for...in用在數(shù)組遍歷上面,如果for...in普通數(shù)組的話,a返回數(shù)組的索引。

for...of

for...of是ES6新增的方法,主要作用是用來遍歷具有iterator接口的數(shù)據(jù)集合,除了ES5的Array,還有ES6新增的Map,Set等,但是for...of不能去遍歷普通的對象(普通對象不具備iterator接口),如果想去遍歷普通對象,可以使用generator函數(shù)去給普通對象先生成iterator接口。for...of的好處是可以使用break跳出循環(huán)。

every/some

返回一個布爾值。當(dāng)我們需要判定數(shù)組中的元素是否滿足某些條件時,可以使用every/some。這兩個的區(qū)別是,every會去判斷判斷數(shù)組中的每一項,而some則是當(dāng)某一項滿足條件時返回。例如:

let foo=[5,1,3,7,4].every(function (item,index) {
                console.log(`索引:${index},數(shù)值:${item}`)
                return item>2
            })
            console.log(foo)

打印結(jié)果為:

當(dāng)?shù)诙棽粷M足條件式跳出循環(huán),返回false。

let foo=[5,1,3,7,4].some(function (item,index) {
                console.log(`索引:${index},數(shù)值:${item}`)
                return item>2
            })
            console.log(foo)

打印結(jié)果為:

當(dāng)數(shù)組的某項滿足條件時跳出循環(huán),返回true.
在按照約定條件篩選數(shù)組時,every/some是非常方便的方法。

filter

篩選出一個滿足相關(guān)條件的新數(shù)組。

let foo=[5,1,3,7,4].filter(function (item,index) {
                console.log(`索引:${index},數(shù)值:${item}`)
                return item>2
            })
            console.log(foo)

將滿足返回值條件的item組成一個新的數(shù)組。過濾器,顧名思義,比較好理解。在按照約定條件篩選數(shù)組元素時,filter比較方便。

map
let foo=[5,1,3,7,4].map(function (item,index) {
                console.log(`索引:${index},數(shù)值:${item}`)
                return item+2
            })
            console.log(foo)

返回一個將每個元素進行“二次加工”的新數(shù)組,map與filter都是返回一個新的數(shù)組,區(qū)別則是filter是將原數(shù)組,通過相關(guān)條件篩選出合法的item,來組成一個新的數(shù)組,而map則是將每個item通過再加工來返回一個新的數(shù)組。

reduce

將數(shù)組元素做“疊加”處理,返回一個值。

let foo=[5,1,3,7,4].reduce(function (pre,cur) {
                console.log(`索引:${pre},數(shù)值:${cur}`)
                return pre+cur
            })
            console.log(foo)

打印結(jié)果為:

pre為累加值,cur為當(dāng)前值。reduce函數(shù)值得注意的是,reduce(fn,init)第二個參數(shù),可以傳一個初始值,如果代碼改成這樣:

let foo=[5,1,3,7,4].reduce(function (pre,cur) {
                console.log(`索引:${pre},數(shù)值:${cur}`)
                return pre+cur
            },"")
            console.log(foo)

則為:

indexOf

返回指定字符串首次出現(xiàn)的位置

 let foo=["57","17","37","7","4"].indexOf("7")
            console.log(foo)

這個函數(shù)比較常用的應(yīng)用場景是,在做if判斷時,可以代替||,&&等關(guān)系符。比如:

可以代替
if(value=="next"||value=="pre")的這種寫法,當(dāng)判斷元素較多時,這種寫法比較劃算。

總結(jié)

個人非常喜歡filter/map/reduce,但是看到身邊的同學(xué)一言不合就foreach,替這三個函數(shù)心疼幾秒。。。不過低版本瀏覽器也確實不支持這些函數(shù)。。。根據(jù)自己需要去選擇合適的遍歷方式可以大大提升效率。哦耶

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

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

相關(guān)文章

  • jS:關(guān)于對象遍歷和數(shù)組遍歷的那些事

    摘要:如圖遍歷數(shù)組遍歷數(shù)組元素并以某種方式處理每個元素是一個常見的操作。如圖不過,里的功能比較強大,可以遍歷而且返回值是的則被省略掉總結(jié)遍歷對象,遍歷出來的是鍵名,而不是鍵值,參數(shù)必須是對象。 可能是由于職業(yè)的關(guān)系,下班之后完全不想Open PC,但很多知識點有必要自己做個小小總結(jié)。本人之前對原生Array和Object完全沒概念。 遍歷對象的方法: Object.keys(Object)...

    qingshanli1988 評論0 收藏0
  • JS內(nèi)置對象-關(guān)于String字符串對象的2個小實驗

    摘要:希望索引值之間用隔開,而最后的索引值后面無。優(yōu)化代碼這個判斷用于防止最后一個索引值后面還有結(jié)果查看其實用來跳出循環(huán)一直覺得不太規(guī)范。。。小實驗是顯示次數(shù)其實就是那個索引值啦,這次顯示的是字符哦涉及到字符,就要用到方法。 第一篇技術(shù)文章寫些簡單點的~在大三上web前端開發(fā)課程時,雖然能用JavaScript制作一些簡單的頁面動態(tài)效果,但其實很多JS知識并未掌握,所以自己又通過視頻再復(fù)習(xí)一...

    Imfan 評論0 收藏0
  • js遍歷之for forEach in of

    摘要:語法參數(shù)當(dāng)前遍歷項。遍歷的范圍在第一次調(diào)用前就會確定。已刪除的項不會被遍歷到。的是由提出的,目的是作為遍歷所有數(shù)據(jù)結(jié)構(gòu)的統(tǒng)一方法。不僅可以遍歷數(shù)組,還可以遍歷結(jié)構(gòu),某些類似數(shù)組的對象如對象對象,對象,以及字符串。 即使是最簡單的循環(huán),其中也深藏學(xué)問 ECMAScript5(es5)有三種for循環(huán) 簡單for for in forEach ECMAScript6(es6)新增 fo...

    yeyan1996 評論0 收藏0
  • vue.js關(guān)于循環(huán)出來多個input并讓每個input后的修改按鈕控制其值

    摘要:從后端返回的數(shù)據(jù)中,有時候你會遇到一堆的,然后每個后面都跟有一個按鈕,就像這種情況其中有兩個問題,在一個框里面輸入值,然后所有的值都都會顯示你輸入的結(jié)果每個輸入框點擊能控制所有的而不只是它前面的那一個其實解決也不復(fù)雜,主要是運用到了循環(huán)以及 從后端返回的數(shù)據(jù)中,有時候你會遇到一堆的input,然后每個input后面都跟有一個按鈕,就像這種情況showImg(https://segmen...

    xiangchaobin 評論0 收藏0
  • JavaScript專題之jQuery通用遍歷方法each的實現(xiàn)

    摘要:語法為回調(diào)函數(shù)擁有兩個參數(shù)第一個為對象的成員或數(shù)組的索引,第二個為對應(yīng)變量或內(nèi)容。但是對于的函數(shù),如果需要退出循環(huán)可使回調(diào)函數(shù)返回,其它返回值將被忽略。 JavaScript 專題系列第十一篇,講解 jQuery 通用遍歷方法 each 的實現(xiàn) each介紹 jQuery 的 each 方法,作為一個通用遍歷方法,可用于遍歷對象和數(shù)組。 語法為: jQuery.each(object,...

    blankyao 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<