DEV Community

Bruce Axtens
Bruce Axtens

Posted on • Edited on

Reversing a string using an Iterator

The problem with RTFM is that sometimes you find interesting things. So I'm reading through the documentation for the String object on MDN and discover how to instantiate an iterator.

function Bruce_IteratorReverse(string) {
  let iterator = string[Symbol.iterator]();
  let theChar = iterator.next();

  let result = [];
  while (!theChar.done) {
    result.unshift(theChar.value);
    theChar = iterator.next();
  }
  return result.join("");
}
Enter fullscreen mode Exit fullscreen mode

Put it in the test frame and run it for a 1000 iterations and come up with an average speed in C# Stopwatch Ticks. Not as bad as RegExp but down that end, viz:

Sarah_ForOf                 1954.52 ticks
Sarah_SplitReverseJoin      2628.535 ticks
Bruce_CharAt                2835.333 ticks
Theophanis_SplitFor         3088.03 ticks
Bruce_Recursive1            3442.696 ticks
Sarah_Reduce                3515.563 ticks
Bruce_Recursive2            3616.804 ticks
Nathanael_SplitReverseJoin  3751.542 ticks
Theophanis_SplitFor_Bruced  3815.779 ticks
Sarah_Recursive             4024.06 ticks
Bruce_ArrayApplyMap         5590.934 ticks
Bruce_ReverseGenerator      8441.915 ticks
Bruce_MapSortMap            10974.299 ticks
Bruce_CharAt2               14908.46 ticks
Bruce_IteratorReverse       93875.974 ticks
Bruce_RegReverse            524215.91 ticks
Enter fullscreen mode Exit fullscreen mode

Top comments (0)