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("");
}
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
Top comments (0)