新聞中心
javascript中Array數(shù)組的迭代方法實(shí)例分析
這篇文章主要介紹了javascript中Array數(shù)組的迭代方法,實(shí)例分析了Array數(shù)組的迭代方法定義與使用技巧,需要的朋友可以參考下
創(chuàng)新互聯(lián)主營富源網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app軟件定制開發(fā),富源h5重慶小程序開發(fā)搭建,富源網(wǎng)站營銷推廣歡迎富源等地區(qū)企業(yè)咨詢
本文實(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ù)組中的對應(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()
,查詢數(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()
對數(shù)組的每一項(xiàng)傳入?yún)?shù),沒有返回值
var
num
=
[1,2,3,4,5,4,3,2,1];
num.forEach(function(item,
index,
array){
return
item;
})
希望本文所述對大家的javascript程序設(shè)計(jì)有所幫助。
js迭代器iterator
iterator(迭代)一般很少直接使用, 但是卻是很常用很重要的功能.
例如 :
對象的擴(kuò)展運(yùn)算符(...)內(nèi)部其實(shí)是調(diào)用了 Iterator 接口。
在es6 中統(tǒng)一了遍歷的接口 Iterator,Iterator 接口的目的,就是為所有數(shù)據(jù)結(jié)構(gòu),提供了一種統(tǒng)一的訪問機(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è)對象定義了默認(rèn)的迭代器。
當(dāng)需要對一個(gè)對象進(jìn)行迭代時(shí)(比如開始用于一個(gè) for..of 循環(huán)中),它的 @@iterator 方法都會在不傳參情況下被調(diào)用,返回的 迭代器 用于獲取要迭代的值。
一些內(nèi)置類型擁有默認(rèn)的迭代器行為,其他類型(如 Object )則沒有。下表中的內(nèi)置類型擁有默認(rèn)的 @@iterator 方法:
更多信息請參見 迭代協(xié)議 。
js中對象分為可迭代和不可迭代 如果是可迭代哪它就會有一個(gè)[Symbol.iterator] 函數(shù)
這個(gè)函數(shù)就是對象的迭代器函數(shù),如用for of 如果遍歷的對象沒有這個(gè)迭代方法那么就會報(bào)錯.
for of 傳入的是可迭代對象,但是如何吧一個(gè)不可迭代的對象變?yōu)榭傻膶ο竽兀『芎唵尉褪亲约簩懸粋€(gè)[Symbol.iterator]函數(shù)。
你以為迭代就這么簡單的結(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(迭代器)對象,它有兩個(gè)屬性,value和done,分別代表返回值和是否完成。
. yield無法單獨(dú)工作,需要配合generator(生成器)的其他函數(shù),如next,懶漢式操作,展現(xiàn)強(qiáng)大的主動控制特性。
用 yield 自定義一個(gè)迭代器
function* () {} 這種函數(shù)名字叫 generator函數(shù), 生成器函數(shù), 下一篇再重點(diǎn)講這個(gè)哈.
Javascript數(shù)組中迭代的幾種寫法
數(shù)組有l(wèi)ength屬性(取長度),toString()方法(轉(zhuǎn)換為字符串),join()方法(用指定字符連接數(shù)組元素)
其他還有:
?棧方法 push( ) pop( )
?隊(duì)列方法 shift( ) unshift( )
?排序方法 reverse( ) sort( )
?操作方法 concat( ) slice( ) splice( )
?位置方法 indexOf( ) lastIndexOf( )
?迭代方法 every( ) filter( ) forEach( ) map( ) some( )
?歸并方法 reduce() reduceRight( )
如何通過javascript對象中的成員變量迭代
//jQuery?里面有一個(gè)方法?ezch?可以對對象進(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])
}
JS中迭代和遍歷有什么區(qū)別?
迭代:
1、自己調(diào)用自己的方法,或者稱遞歸。這個(gè)應(yīng)該不用多說。
2、還有一種解釋:很多程序有迭代器。這是一種用于“遍歷”數(shù)組的工具對象。一般遍歷一個(gè)數(shù)組都是使用循環(huán)變量從0到最后一個(gè),或者使用鏈表遍歷量表中內(nèi)容。使用迭代器可以不關(guān)注數(shù)組的具體實(shí)現(xiàn)方式,遍歷數(shù)組中所有成員。
遍歷:
對數(shù)據(jù)結(jié)構(gòu)中每一個(gè)成員都進(jìn)行一次訪問的操作就是遍歷。比如遍歷列表。最為常見得問題是遍歷樹,遍歷樹的常見方法有:先序/中序/后序,或者按照另一個(gè)緯度劃分有,廣度遍歷和深度遍歷。相關(guān)具體算法可以查找其他資料。
當(dāng)前題目:迭代javascript,迭代更新是什么意思
當(dāng)前網(wǎng)址:http://www.ef60e0e.cn/article/dseepee.html