UNPKG

jiff

Version:

JSON diff and patch based on rfc6902

46 lines (35 loc) 843 B
/** @license MIT License (c) copyright 2010-2014 original author or authors */ /** @author Brian Cavalier */ /** @author John Hann */ /** * Create a deep copy of x which must be a legal JSON object/array/value * @param {object|array|string|number|null} x object/array/value to clone * @returns {object|array|string|number|null} clone of x */ module.exports = clone; function clone(x) { if(x == null || typeof x !== 'object') { return x; } if(Array.isArray(x)) { return cloneArray(x); } return cloneObject(x); } function cloneArray (x) { var l = x.length; var y = new Array(l); for (var i = 0; i < l; ++i) { y[i] = clone(x[i]); } return y; } function cloneObject (x) { var keys = Object.keys(x); var y = {}; for (var k, i = 0, l = keys.length; i < l; ++i) { k = keys[i]; y[k] = clone(x[k]); } return y; }