专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

高级前端必会设计模式之迭代器模式

ins518 2024-09-11 09:27:10 技术文章 30 ℃ 0 评论

前端JavaScript设计模式-迭代器模式:

迭代器模式是通过一种方法兼容多种格式的有序数据集合的方式进行循环运算

Bash
// Iterator是一个统一的遍历接口来遍历所有数据类型
// 例如Array、Map Set、String、TypedArray、arguments、NodeList
class Iterator{
  constructor(container){
    this.list = container.list
    this.index = 0
  }
  next(){
    if(this.hasNext()){
      return this.list[this.index++]
    }
    return null
  }
  hasNext(){
    if(this.index >= this.list.length){
      return false
    }
    return true
  }
}

class Container{
  constructor(list){
    this.list = list
  }
  // 生成遍历器
  getIterator(){
    return new Iterator(this)
  }
}

var arr = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
let container = new Container(arr)
let iterator = container.getIterator()
while(iterator.hasNext()){
  console.log(iterator.next())
}

// 实用案例
// 在页面中写入3个p标签<p>1</p><p>2</p><p>3</p>
// 循环方法
function each(data){
  // ES6 for of语法 简化以上操作,推荐这种方法做循环(data必须是带有遍历器特性的对象)
  for(let item of data){
    console.log(item)
  }
}

let arr = [1,2,3,4]
let nodeList = document.getElementByTagName('p')
let m = new Map()
m.set('a',100)
m.set('b',100)

// 针对三种不同类型的数组进入到each方法中进行循环运算
each(arr)
console.log('==============')
each(nodeList)
console.log('==============')
each(m)

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表