Skip to content

Instantly share code, notes, and snippets.

@mrw34
Last active April 11, 2016 20:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mrw34/6fd5b9b5a5437e351c02 to your computer and use it in GitHub Desktop.
Save mrw34/6fd5b9b5a5437e351c02 to your computer and use it in GitHub Desktop.
Stable JavaScript Object hash function for Node.js
function hash(object, algorithm, encoding) {
var h = require('crypto').createHash(algorithm || 'md5');
(function update(v, k) {
if (k !== undefined) {
h.update(JSON.stringify(k));
}
if (v && v.constructor === Array) {
v.forEach(function(value) {
update(h, value);
});
} else if (v && v.constructor === Object) {
var keys = Object.keys(v);
keys.sort();
keys.forEach(function(key) {
update(h, v[key], key);
});
} else {
h.update(JSON.stringify(v));
}
})(object);
return h.digest(encoding || 'hex');
}
@mrw34
Copy link
Author

mrw34 commented Apr 11, 2016

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment