DEV Community

Bruce Axtens
Bruce Axtens

Posted on • Updated on

Reversing a string using an ArrayBuffer

How many more ways are there to reverse a string in JavaScript? I was reading the friendly manual again and thought of another way.

The method is let down a little by the .map() at the end. I was rather hoping for a less pedestrian way of changing the ArrayBuffer back into normal text.

The other gotcha is that we're storing uint values, so prepare for mangled emojis.

function Bruce_ByteBuffer(string) {
  let buffer = new ArrayBuffer(string.length);
  let int8View = new Uint8Array(buffer);
  for (let i = 0, j = string.length - 1; i < string.length; i++, j--) {
    int8View[i] = string.charCodeAt(j);
  }
  return Array.prototype.slice.call(int8View).map(function (item) {
    return String.fromCharCode(item)
  }).join("");
}
Enter fullscreen mode Exit fullscreen mode

Speed-wise, using my framework, it's in the slower end of midrange.

Sarah_ForOf                 1997.262 ticks
Bruce_CharAt                3165.792 ticks
Sarah_SplitReverseJoin      3382.125 ticks
Bruce_Recursive2            3423.004 ticks
Theophanis_SplitFor         3765.074 ticks
Nathanael_SplitReverseJoin  3829.166 ticks
Bruce_Recursive1            3981.59 ticks
Sarah_Reduce                4272.548 ticks
Theophanis_SplitFor_Bruced  4310.981 ticks
Sarah_Recursive             4580.1 ticks
Bruce_ArrayApplyMap         6305.892 ticks
Bruce_ReverseGenerator      8994.98 ticks
Bruce_MapSortMap            11262.885 ticks
Bruce_ByteBuffer            15190.07 ticks
Bruce_CharAt2               17016.049 ticks
Bruce_IteratorReverse       103529.193 ticks
Bruce_RegReverse            582476.836 ticks
Enter fullscreen mode Exit fullscreen mode

Top comments (0)