迭代器——外部迭代器

98 阅读1分钟

使用外部迭代器来比较两个数组是否相等

  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)