迭代器模式
- What? 迭代器模式是指提供一种方法,顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。
- 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])
// 长度不相等
续更中.....