前端设计模式之迭代器模式

130 阅读1分钟

迭代器模式

  1. What? 迭代器模式是指提供一种方法,顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。
  2. How? 迭代器模式可以把迭代过程从业务中分离出来,在使用迭代器模式以后,即使不关心对象的内部构造,也可以按顺序访问其中的每个元素。

一、内部迭代器

即编写一个函数实现自己内部委托迭代的状态

我们自己来实现一个循环函数,函数接受两个参数。第一个是循环的数组,第二个是循环中每一步将要触发的回调函数:

/**
 * 基础迭代器
 * @param {Array} arr 迭代数组
 * @param {Function} callback 需要迭代的回调函数
 */

const each = (arr, callback) => {
  // 把元素下标和元素党组哦参数来传给 callback 函数
  arr.map((res, i) => callback(res, i));
}

each([1, 3, 6, 9], (a, b) => console.log([a, b]))
// [ 1, 0 ]
// [ 3, 1 ]
// [ 6, 2 ]
// [ 9, 3 ]

接着上面的迭代器,利用 each 迭代器可以验证 2 个数组内部元素都全部相等的方案:


const compare = (ary1, ary2) => {
  if (ary1.length === ary2.length) {
    return each(ary1, (o, i) => {
      if (o !== ary2[i]) {
        return console.log(`${i} 不相等`)
      }
      return console.log('相等')
    })
  }
  console.log('长度不相等')
}

compare([1, 2, 3], [1, 2, 4])
// 相等
// 相等
// 2 不相等

compare([1, 3, 5], [1, 3, 5])
// 相等
// 相等
// 相等

compare([1, 3, 5, 8], [1, 3, 5])
// 长度不相等

续更中.....