Iterators were introduce in JS1.5. Look into the yield expression, it's pretty useful for looping over stuff on-demand (as opposed to all at once).
https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Iterators_and_Generators On Mon, Dec 13, 2010 at 10:53 AM, Leonardo Braga <[email protected]>wrote: > Hi, > > For a gallery I was writing, I needed to traverse an array in a loop > way, allowing me to move it forward or backward to create a carousel > effect on an image list, so I wrote this tiny "class" for that. As you > can see I didn't write any validations. You are free to fix, extend, > derivate or copy and I would appreciate if you post any modifications > here. > > > /*--------------------------*/ > > function Loopr(_arr) { > this.array = _arr; > this.position = -1; > > this.next = function() { > (!(++this.position < this.array.length)) && (this.position = > 0); > return this.array[this.position]; > } > > this.prev = function() { > (!(--this.position > -1)) && (this.position = > this.array.length - > 1); > return this.array[this.position]; > } > } > > // Tests > var test = ['a', 'b', 'c'], loopr, resultTests; > > loopr = new Loopr(test); > > resultTests = []; > resultTests.push(loopr.next()); > resultTests.push(loopr.next()); > resultTests.push(loopr.next()); > resultTests.push(loopr.next()); > resultTests.push(loopr.next()); > resultTests.push(loopr.next()); > > // result: 'a', 'b', 'c', 'a', 'b', 'c' > > loopr = new Loopr(test); > > resultTests = []; > resultTests.push(loopr.prev()); > resultTests.push(loopr.prev()); > resultTests.push(loopr.prev()); > resultTests.push(loopr.prev()); > resultTests.push(loopr.prev()); > resultTests.push(loopr.prev()); > > // result: 'c', 'b', 'a', 'c', 'b', 'a' > > /*--------------------------*/ > > I hope it helps someone. > > Leonardo Braga > @LeonardoBraga > > -- > You received this message because you are subscribed to the Google Groups > "The JSMentors JavaScript Discussion Group" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]<jsmentors%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/jsmentors?hl=en. > > -- You received this message because you are subscribed to the Google Groups "The JSMentors JavaScript Discussion Group" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/jsmentors?hl=en.
