ES6对于特殊的对象的遍历(iterator)
生活随笔
收集整理的這篇文章主要介紹了
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…直接一步到位,那么可不可以做到呢
這里就說一個今天要說的東西,就是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)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android进阶之路 - 使用Stet
- 下一篇: 长江水质的评价和预测——综合指标评价