這篇文章主要介紹了javascript中Array數(shù)組的迭代方法,實(shí)例分析了Array數(shù)組的迭代方法定義與使用技巧,需要的朋友可以參考下

創(chuàng)新互聯(lián)主營(yíng)富源網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,app軟件定制開(kāi)發(fā),富源h5重慶小程序開(kāi)發(fā)搭建,富源網(wǎng)站營(yíng)銷(xiāo)推廣歡迎富源等地區(qū)企業(yè)咨詢(xún)
本文實(shí)例講述了javascript迭代的方法。分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:
代碼如下:
//filter()
利用指定的函數(shù)確定是否返回?cái)?shù)組中包涵的某一項(xiàng)
var
num
=
[1,2,3,4,5,6,12];
num.filter(function(item,
index,
array){
return
(item
2);
//[3,
4,
5,
6,
12]
});
//map()
返回一個(gè)數(shù)組,數(shù)組中每一項(xiàng)都是在原始數(shù)組中的對(duì)應(yīng)項(xiàng)上運(yùn)行傳入?yún)?shù)的結(jié)果
var
num
=
[1,2,3,4,5,4,3,2,1];
num.map(function(item,
index,
array){
return
(item
*
2);
//[2,
4,
6,
8,
10,
8,
6,
4,
2]
});
//every()
some()
,查詢(xún)數(shù)組中的某個(gè)項(xiàng)是否符合某個(gè)條件
every()必須傳入的參數(shù)每一個(gè)都返回true,結(jié)果才為true;some()方法
//只要有一個(gè)為true,結(jié)果就為true
var
num
=
[1,2,3,4,5,4,3,2,1];
num.every(function(item,
index,
array){
return
(item
2);
//false
});
num.some(function(item,
index,
array){
return
(item
2);
//true
})
//forEach()
對(duì)數(shù)組的每一項(xiàng)傳入?yún)?shù),沒(méi)有返回值
var
num
=
[1,2,3,4,5,4,3,2,1];
num.forEach(function(item,
index,
array){
return
item;
})
希望本文所述對(duì)大家的javascript程序設(shè)計(jì)有所幫助。
iterator(迭代)一般很少直接使用, 但是卻是很常用很重要的功能.
例如 :
對(duì)象的擴(kuò)展運(yùn)算符(...)內(nèi)部其實(shí)是調(diào)用了 Iterator 接口。
在es6 中統(tǒng)一了遍歷的接口 Iterator,Iterator 接口的目的,就是為所有數(shù)據(jù)結(jié)構(gòu),提供了一種統(tǒng)一的訪(fǎng)問(wèn)機(jī)制,即for...of循環(huán)。
字符串也可以使用擴(kuò)展運(yùn)算符
rest運(yùn)算符, 與擴(kuò)展運(yùn)算符是逆運(yùn)算
擴(kuò)展運(yùn)算符:數(shù)組=分割序列
rest運(yùn)算符:分割序列=數(shù)組
rest可以代替arguments變量
回到主題, 迭代
Symbol.iterator 為每一個(gè)對(duì)象定義了默認(rèn)的迭代器。
當(dāng)需要對(duì)一個(gè)對(duì)象進(jìn)行迭代時(shí)(比如開(kāi)始用于一個(gè) for..of 循環(huán)中),它的 @@iterator 方法都會(huì)在不傳參情況下被調(diào)用,返回的 迭代器 用于獲取要迭代的值。
一些內(nèi)置類(lèi)型擁有默認(rèn)的迭代器行為,其他類(lèi)型(如 Object )則沒(méi)有。下表中的內(nèi)置類(lèi)型擁有默認(rèn)的 @@iterator 方法:
更多信息請(qǐng)參見(jiàn) 迭代協(xié)議 。
js中對(duì)象分為可迭代和不可迭代 如果是可迭代哪它就會(huì)有一個(gè)[Symbol.iterator] 函數(shù)
這個(gè)函數(shù)就是對(duì)象的迭代器函數(shù),如用for of 如果遍歷的對(duì)象沒(méi)有這個(gè)迭代方法那么就會(huì)報(bào)錯(cuò).
for of 傳入的是可迭代對(duì)象,但是如何吧一個(gè)不可迭代的對(duì)象變?yōu)榭傻膶?duì)象呢!很簡(jiǎn)單就是自己寫(xiě)一個(gè)[Symbol.iterator]函數(shù)。
你以為迭代就這么簡(jiǎn)單的結(jié)束了嗎?現(xiàn)在再講一個(gè)新東西 yield
. yield是ES6的新關(guān)鍵字,使生成器函數(shù)執(zhí)行暫停,yield關(guān)鍵字后面的表達(dá)式的值返回給生成器的調(diào)用者。它可以被認(rèn)為是一個(gè)基于生成器的版本的return關(guān)鍵字。
. yield關(guān)鍵字實(shí)際返回一個(gè)IteratorResult(迭代器)對(duì)象,它有兩個(gè)屬性,value和done,分別代表返回值和是否完成。
. yield無(wú)法單獨(dú)工作,需要配合generator(生成器)的其他函數(shù),如next,懶漢式操作,展現(xiàn)強(qiáng)大的主動(dòng)控制特性。
用 yield 自定義一個(gè)迭代器
function* () {} 這種函數(shù)名字叫 generator函數(shù), 生成器函數(shù), 下一篇再重點(diǎn)講這個(gè)哈.
數(shù)組有l(wèi)ength屬性(取長(zhǎng)度),toString()方法(轉(zhuǎn)換為字符串),join()方法(用指定字符連接數(shù)組元素)
其他還有:
?棧方法 push( ) pop( )
?隊(duì)列方法 shift( ) unshift( )
?排序方法 reverse( ) sort( )
?操作方法 concat( ) slice( ) splice( )
?位置方法 indexOf( ) lastIndexOf( )
?迭代方法 every( ) filter( ) forEach( ) map( ) some( )
?歸并方法 reduce() reduceRight( )
//jQuery?里面有一個(gè)方法?ezch?可以對(duì)對(duì)象進(jìn)行遍歷
var?obj?=?{"id"?:?1?,"name"?:?"zs"},
$.each(obj,function(index,value){
console.debug(index,value);
})
//或者使用這個(gè)
for(var?p?in?obj){
console.debug(obj[p])
}
迭代:
1、自己調(diào)用自己的方法,或者稱(chēng)遞歸。這個(gè)應(yīng)該不用多說(shuō)。
2、還有一種解釋?zhuān)汉芏喑绦蛴械鳌_@是一種用于“遍歷”數(shù)組的工具對(duì)象。一般遍歷一個(gè)數(shù)組都是使用循環(huán)變量從0到最后一個(gè),或者使用鏈表遍歷量表中內(nèi)容。使用迭代器可以不關(guān)注數(shù)組的具體實(shí)現(xiàn)方式,遍歷數(shù)組中所有成員。
遍歷:
對(duì)數(shù)據(jù)結(jié)構(gòu)中每一個(gè)成員都進(jìn)行一次訪(fǎng)問(wèn)的操作就是遍歷。比如遍歷列表。最為常見(jiàn)得問(wèn)題是遍歷樹(shù),遍歷樹(shù)的常見(jiàn)方法有:先序/中序/后序,或者按照另一個(gè)緯度劃分有,廣度遍歷和深度遍歷。相關(guān)具體算法可以查找其他資料。
本文題目:迭代javascript,迭代更新是什么意思
鏈接地址:http://chinadenli.net/article44/dseepee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、移動(dòng)網(wǎng)站建設(shè)、、企業(yè)建站、動(dòng)態(tài)網(wǎng)站、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)