X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=dygraph-utils.js;h=d3a31d54f5de2989544c04e84def225b944c837f;hb=537fe03a3ae53a0a9deb81d23fcca494bcc7691f;hp=8cfd86172495d2c1656d250aea8d3b2339355ca4;hpb=856c1ffb22b098041a7ab1a7cb8e2b6a146722b2;p=dygraphs.git diff --git a/dygraph-utils.js b/dygraph-utils.js index 8cfd861..d3a31d5 100644 --- a/dygraph-utils.js +++ b/dygraph-utils.js @@ -684,46 +684,38 @@ Dygraph.isAndroid = function() { Dygraph.Iterator = function(array, start, length, predicate) { start = start || 0; length = length || array.length; + this.hasNext = true; // Use to identify if there's another element. + this.peek = null; // Use for look-ahead + this.start_ = start; this.array_ = array; this.predicate_ = predicate; this.end_ = Math.min(array.length, start + length); - this.nextIdx_ = start - 1; // use -1 so initial call to advance works. - this.hasNext_ = true; - this.peek_ = null; - this.advance_(); -} - -Dygraph.Iterator.prototype.hasNext = function() { - return this.hasNext_; + this.nextIdx_ = start - 1; // use -1 so initial advance works. + this.next(); // ignoring result. } Dygraph.Iterator.prototype.next = function() { - if (this.hasNext_) { - var obj = this.peek_; - this.advance_(); - return obj; + if (!this.hasNext) { + return null; } - return null; -} + var obj = this.peek; -Dygraph.Iterator.prototype.peek = function() { - return this.peek_; -} - -Dygraph.Iterator.prototype.advance_ = function() { - var nextIdx = this.nextIdx_; - nextIdx++; - while(nextIdx < this.end_) { + var nextIdx = this.nextIdx_ + 1; + var found = false; + while (nextIdx < this.end_) { if (!this.predicate_ || this.predicate_(this.array_, nextIdx)) { - this.peek_ = this.array_[nextIdx]; - this.nextIdx_ = nextIdx; - return; + this.peek = this.array_[nextIdx]; + found = true; + break; } nextIdx++; } this.nextIdx_ = nextIdx; - this.hasNext_ = false; - this.peek_ = null; + if (!found) { + this.hasNext = false; + this.peek = null; + } + return obj; } /**