當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
什么是迭代器,JS如何实现迭代器
生活随笔
收集整理的這篇文章主要介紹了
什么是迭代器,JS如何实现迭代器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.背景知識
1)迭代的定義:從一個數據集合中按照一定的順序,不斷取出數據的過程稱為迭代
2)迭代和遍歷的區別
迭代:迭代強調的是依次取數據的過程,并不保證取多少,也不保證把所有的數據都取完
遍歷:遍歷強調的是要把整個數據依次全部取出
3)迭代器:對迭代過程的封裝,在不同的語言中有不同的表現形式,通常為對象
4)迭代模式:一種設計模式,用于統一迭代過程,迭代模式規范了迭代器規格
- 迭代器應該具有得到下一個數據的能力
- 迭代器應該具有判斷是否還有后續數據的能力
2.JS中的迭代器
JS規定,如果一個對象具有next方法,并且該方法返回一個對象,該對象的格式如例【例2】,則認為該對象是一個迭代器
含義
next方法:用于得到下一個數據
返回的對象:value——下一個數據的值;done——boolean,是否迭代完成
【例】數組的迭代
const arr = [1, 2, 3, 4, 5]; //迭代數組 const iterator = {i: 0,next() {var result = {value: arr[this.i],done: this.i >= arr.length}this.i++return result;} } let data = iterator.next(); console.log(data); while (!data.done) {console.log(data.value);//進行下一次迭代data = iterator.next();console.log(data) } console.log('迭代完成');【例2】迭代器創建函數
const arr1 = [12, 43, 6534, 1235, 6734]; const arr2 = [123, 56, 876, 312, 957]; //迭代器創建函數 function creatIterator(arr) {let i = 0;return {next() {var result = {value: arr[i],done: i >= arr.length}i++;return result;}} } const iter1 = creatIterator(arr1); const iter2 = creatIterator(arr2); console.log(iter1);【例3】斐波拉契數列
//1 1 2 3 5 8 13 …… function getFeiboIterator() {let prev1 = 1,prev2 = 1,n = 1;return {next() {let value;//前兩位為1if (n <= 2) {value = 1;} else {//從第三位開始,值為其前兩位的和value = prev1 + prev2;}const result = {value,done: false};//flag右移,即需要更新前兩位的值prev2 = prev1;prev1 = result.value;n++;return result;}} } feibo = getFeiboIterator();【結果】
總結
以上是生活随笔為你收集整理的什么是迭代器,JS如何实现迭代器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AJAX实现图片文件上传
- 下一篇: 可迭代协议与for-of循环