Array function rotate |
var rotateArray = function(a, inc) { for (var l = a.length, inc = (Math.abs(inc) >= l && (inc %= l), inc < 0 && (inc += l), inc), i, x; inc; inc = (Math.ceil(l / inc) - 1) * inc - l + (l = inc)) for (i = l; i > inc; x = a[--i], a[i] = a[i - inc], a[i - inc] = x); return a; };
var arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']; rotateArray(arr, -1);
|
pending… |
Array prototype rotate |
Array.prototype.rotate = (function() { return function(inc) { for (var l = this.length, inc = (Math.abs(inc) >= l && (inc %= l), inc < 0 && (inc += l), inc), i, x; inc; inc = (Math.ceil(l / inc) - 1) * inc - l + (l = inc)) for (i = l; i > inc; x = this[--i], this[i] = this[i - inc], this[i - inc] = x); return this; }; })();
var arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']; arr.rotate(1);
|
pending… |
Array prototype rotate with unshift/splice |
Array.prototype.rotate = (function() { var unshift = Array.prototype.unshift, splice = Array.prototype.splice;
return function(count) { var len = this.length >>> 0, count = count >> 0;
unshift.apply(this, splice.call(this, count % len, len)); return this; }; })();
var arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']; arr.rotate(1);
|
pending… |
Function rotates with a direction and returns an object with current, prior and next values |
function directionalRotate(direction, counter, arr) { counter = direction ? (counter < arr.length - 1 ? counter + 1 : 0) : (counter > 0 ? counter - 1 : arr.length - 1) var currentItem = arr[counter] var priorItem = arr[counter - 1] ? arr[counter - 1] : arr[arr.length - 1] var nextItem = arr[counter + 1] ? arr[counter + 1] : arr[0] return { "counter": counter, "current": currentItem, "prior": priorItem, "next": nextItem } } var direction = true // forward var counter = 0 var arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'];
directionalRotate(direction, counter, arr)
|
pending… |
0 comments