Skip to content

Instantly share code, notes, and snippets.

@gtk2k
Created October 16, 2015 11:16
Show Gist options
  • Save gtk2k/259946b282a00202082c to your computer and use it in GitHub Desktop.
Save gtk2k/259946b282a00202082c to your computer and use it in GitHub Desktop.
JSのオブジェクトのキーを62進数に置換⇔元に戻す
/*
// オブジェクトのキーを62進数に変換
createKeydic(obj);
keyShorten(obj);
// オブジェクトのキーを62進数から元に戻す
restoreKey(obj);
*/
var keydic = {};
var keydicrev = {};
var refKey = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
var keyid = 0;
function createKeydic(obj) {
if (null === obj || typeof obj !== 'object') return;
if (obj instanceof Array) {
for (var i = obj.length; i--;) {
createKeydic(obj[i]);
}
} else {
for (var key in obj) {
createKeydic(obj[key]);
if (!keydic[key]) {
keydic[key] = refKey[keyid];
keydicrev[refKey[keyid]] = key;
keyid++;
}
}
}
}
function keyShorten(obj) {
if (null === obj || typeof obj !== 'object') return;
if (obj instanceof Array) {
for (var i = obj.length; i--;) {
keyShorten(obj[i]);
}
} else {
for (var key in obj) {
keyShorten(obj[key]);
obj[keydic[key]] = obj[key];
delete obj[key];
}
}
}
function restoreKey(obj) {
if (null === obj || typeof obj !== 'object') return;
if (obj instanceof Array) {
for (var i = obj.length; i--;) {
restoreKey(obj[i]);
}
} else {
for (var key in obj) {
restoreKey(obj[key]);
obj[keydicrev[key]] = obj[key];
delete obj[key];
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment