index2.js 774 Bytes
var isObject = function(a) {
  return Object.prototype.toString.call(a) === '[object Object]'
}

var isArray = function(a) {
  return Object.prototype.toString.call(a) === '[object Array]'
}

var copyObjectWithSortedKeys = function(object) {
  if (isObject(object)) {
    var newObj = {}
    var keysSorted = Object.keys(object).sort()
    var key
    for (var i in keysSorted) {
      key = keysSorted[i]
      if (Object.prototype.hasOwnProperty.call(object, key)) {
        newObj[key] = copyObjectWithSortedKeys(object[key])
      }
    }
    return newObj
  } else if (isArray(object)) {
    return object.map(copyObjectWithSortedKeys)
  } else {
    return object
  }
}

module.exports = function(object) {
  return JSON.stringify(copyObjectWithSortedKeys(object))
}