使用外部迭代器来比较两个数组是否相等
var Iterator = function(ary) {
let current = 0
const next = () => {
current += 1
}
const isDone = () => {
return current >= ary.length
}
const getCurrentItem = () => {
return ary[current]
}
const getLength = () => {
return ary.length
}
return {
next,
isDone,
getCurrentItem,
getLength
}
}
var compare = function(iterator1, iterator2) {
if (iterator1.getLength() !== iterator2.getLength()) {
alert('两个函数不相等')
return false
}
while(!iterator1.isDone() && !iterator2.isDone()) {
if (iterator1.getCurrentItem() !== iterator2.getCurrentItem()) {
throw new Error('两个函数不相等')
}
iterator1.next()
iterator2.next()
}
alert('两个函数相等')
}
var iterator1 = Iterator( [ 1, 2] );
var iterator2 = Iterator( [ 1, 2] );
compare(iterator1, iterator2)