aleksoft1
10/7/2014 - 7:42 AM

Array.move.js

Array.move.js

Summary

Moves elements within an array, returning an array containing the moved elements.

Syntax

array.move(index, howMany, toIndex);

Parameters

index: Index at which to move elements. If negative, index will start from the end.

howMany: Number of elements to move from index.

toIndex: Index of the array at which to place the moved elements. If negative, toIndex will start from the end.

Usage

array = ["a", "b", "c", "d", "e", "f", "g"];

array.move(3, 2, 1); // returns ["d","e"]

array; // returns ["a", "d", "e", "b", "c", "f", "g"]
Array.prototype.move || Object.defineProperty(Array.prototype, "move", {
	value: function (index, howMany, toIndex) {
		var
		array = this,
		index = parseInt(index) || 0,
		index = index < 0 ? array.length + index : index,
		toIndex = parseInt(toIndex) || 0,
		toIndex = toIndex < 0 ? array.length + toIndex : toIndex,
		toIndex = toIndex <= index ? toIndex : toIndex <= index + howMany ? index : toIndex - howMany,
		moved;

		array.splice.apply(array, [toIndex, 0].concat(moved = array.splice(index, howMany)));

		return moved;
	}
});