jiff
Version:
JSON diff and patch based on rfc6902
54 lines (48 loc) • 1.1 kB
JavaScript
/** @license MIT License (c) copyright 2010-2014 original author or authors */
/** @author Brian Cavalier */
/** @author John Hann */
exports.cons = cons;
exports.tail = tail;
exports.map = map;
/**
* Prepend x to a, without mutating a. Faster than a.unshift(x)
* @param {*} x
* @param {Array} a array-like
* @returns {Array} new Array with x prepended
*/
function cons(x, a) {
var l = a.length;
var b = new Array(l+1);
b[0] = x;
for(var i=0; i<l; ++i) {
b[i+1] = a[i];
}
return b;
}
/**
* Create a new Array containing all elements in a, except the first.
* Faster than a.slice(1)
* @param {Array} a array-like
* @returns {Array} new Array, the equivalent of a.slice(1)
*/
function tail(a) {
var l = a.length-1;
var b = new Array(l);
for(var i=0; i<l; ++i) {
b[i] = a[i+1];
}
return b;
}
/**
* Map any array-like. Faster than Array.prototype.map
* @param {function} f
* @param {Array} a array-like
* @returns {Array} new Array mapped by f
*/
function map(f, a) {
var b = new Array(a.length);
for(var i=0; i< a.length; ++i) {
b[i] = f(a[i]);
}
return b;
}