迭代器,其实就是根据index下标增加来实现的

  1. class MyIterator {
  2. private container: Container;
  3. private list: Array<any>;
  4. private index: number;
  5. constructor(container: Container) {
  6. this.list = container.list
  7. this.index = 0;
  8. }
  9. next() {
  10. if (this.hasNext()) {
  11. return this.list[this.index++]
  12. }
  13. return null
  14. }
  15. hasNext() {
  16. if (this.index >= this.list.length) {
  17. return false
  18. }
  19. return true
  20. }
  21. }
  22. class Container {
  23. list: Array<any>
  24. constructor(list: Array<any>) {
  25. this.list = list
  26. }
  27. getIterator() {
  28. return new MyIterator(this)
  29. }
  30. }
  31. const container = new Container([1, 2, 3, 4])
  32. const iterator = container.getIterator()
  33. console.log(iterator.next()) // 1
  34. console.log(iterator.next()) // 2
  35. console.log(iterator.next()) // 3
  36. console.log(iterator.next()) // 4
  37. console.log(iterator.next()) // null