Вот функции обратимого массива в JavaScript, которые обрабатывают целые числа или строки:
function reverse(array)
{
var left = null;
var right = null;
var length = array.length;
for (left = 0, right = length - 1; left < right; left += 1, right -= 1)
{
var temporary = array[left];
array[left] = array[right];
array[right] = temporary;
}
return array;
}
function toDigitsArrayFromInteger(integer, isReverse)
{
var digits = [];
if (integer > 0)
{
var floor = window.Math.floor;
while (integer > 0)
{
digits.push(floor(integer % 10));
integer = floor(integer / 10);
}
// Array is populated in reverse order. Un-reverse it to make it normal.
if (!isReverse)
{
digits = reverse(digits);
}
}
else if (integer < 0)
{
digits = toDigitsArrayFromInteger(-integer, isReverse);
}
else if (integer === 0)
{
digits.push(0);
}
return digits;
}
function toDigitsArrayFromString(string, isReverse)
{
var digits = [];
string += ""; // Coerce to string.
var i = null;
var length = string.length;
for (i = 0; i < length; i += 1)
{
var integer = parseInt(string.charAt(i), 10);
if (isFinite(integer))
{
digits.push(integer);
}
}
if (isReverse)
{
digits = reverse(digits);
}
return digits;
}
После того, как у вас есть цифры в виде массива, вы можете легко повернуть массив, чтобы получить цифры, начинающиеся слева или изправо.
Строковая функция более универсальна, потому что она может найти любую цифру в строке, тогда как целочисленная функция ограничена целыми числами.
Тесты: http://jsperf.com/todigitsarray
Сравнительные тесты между двумя функциями показывают, что в Firefox 10 и Chrome 12 строковая функция на 30–60% быстрее, чем целочисленная функция.В Opera 12 целочисленная функция немного быстрее примерно на 10%.