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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ES6对于特殊的对象的遍历(iterator)

發布時間:2024/3/24 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ES6对于特殊的对象的遍历(iterator) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡介

我們在處理數據的時候很多時候會遇到一些比較麻煩的數據,例如下面這樣的一個例子

let NBA = {Team:{LAC:['Lebron James','Anthony Davis','Dwight Howard'],Bulls:['Michael Jordan','derrick rose','Jimmy Butler'],Celts:['kevin garnett','Rajen langdo','Paul Pierce']} }

是不是挺熟悉的,然后我想要把里面球隊隊員的名字都拿出來,統一放到一個數組里面去,要怎么做呢,之前我在我上一篇文章里面提到了一個for…of…的遍歷方法,可以遍歷出對象里面的的value值,那么這個咋整

如果用土方法不怕麻煩的話,可以這樣

for (const key in NBA) {let name = []for (const item in NBA[key]) {name = name.concat(NBA[key][item])}console.log(name) }


得到的也就是所有的名字的結果,可是如果我不想這樣,我想要直接使用for…of…直接一步到位,那么可不可以做到呢

for (const item of NBA) {console.log(item); }

這里就說一個今天要說的東西,就是iterator,它的中文名字,就是選代器的意思

這是一個ES6里面新的一個方法,那么它要怎么用呢,直接上代碼

NBA[Symbol.iterator] = function() { //這是一個API的接口 //接口的入口數據是通過this來傳遞//輸出的出口是通過return來進行let Team = this.Teamlet keys = Reflect.ownKeys(Team)let name = []return {//這個是iterator接口規定的格式next(){if(!name.length ){name = Team[keys[0]] //從第一支球隊的第一個名字開始遍歷keys.shift() //每次遍歷完一個,刪掉一個}return {done:!name.length, //遍歷是否結束,false沒結束,true結束value:name.shift() //當前被遍歷到的值}}} } for (const item of NBA) {console.log(item); }

這個時候我們就可以直接打印結果

所以,如果以后遇到這樣的情況,只需要封裝起來這個方法,就可以直接遍歷了,是不是很方便嘞!

而且它適用于非常復雜的對象遍歷的時候,比如說在NBA的對象里面還有一個總經理的對象的時候,第一種方法就不適用了

這個我也是剛學到的,哈哈哈哈哈,這方法賊牛逼我覺得

如果覺得這篇文章對你有所幫助,求點個贊~~!!!

總結

以上是生活随笔為你收集整理的ES6对于特殊的对象的遍历(iterator)的全部內容,希望文章能夠幫你解決所遇到的問題。

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