日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

什么是迭代器,JS如何实现迭代器

發布時間:2024/2/28 javascript 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 什么是迭代器,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如何实现迭代器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。