Object's Keys Rename
HTML
<textarea id="log" rows="20" cols="30"></textarea>
JavaScript
//================================================
// Demo
//================================================
var log = "";
// objA Copy & Rename
var objA = {A1:100, "A2":200, A3:300};
var objB = ObjKeyRename(objA, {"A1":"B1", "A3":"B3"});
log += "--- objA Copy & Rename ---\n";
log += "[objA]\n";
for(var key in objA) log += key + "=" + objA[key] + "\n";
log += "[objB]\n";
for(var key in objB) log += key + "=" + objB[key] + "\n";
// objA Rename Directly
log += "\n--- objA Rename Directly ---\n";
log += "[objA before]\n";
for(var key in objA) log += key + "=" + objA[key] + "\n";
ObjKeyRename2(objA, {"A2":"XXX"});
log += "[objA after]\n";
for(var key in objA) log += key + "=" + objA[key] + "\n";
document.getElementById("log").value += log;
//================================================
// Rename Objet's Keys [Copy]
// src : object - source obj
// map : object - rename map
// {"old1":"new1", "old2":"new2", ...}
//================================================
function ObjKeyRename(src, map) {
var dst = {};
// src --> dst (copy)
for(var key in src){
if(key in map)
// rename key
dst[map[key]] = src[key];
else
// same key
dst[key] = src[key];
}
return dst;
}
//================================================
// Rename Objet's Keys [Direct]
// src : object - source obj
// map : object - rename map
// {"old1":"new1", "old2":"new2", ...}
//================================================
function ObjKeyRename2(src, map) {
var dst = {};
// src --> dst
for(var key in src){
if(key in map)
// rename key
dst[map[key]] = src[key];
else
// same key
dst[key] = src[key];
}
// clear src
for(var key in src){
delete src[key];
}
// dst --> src
for(var key in dst){
src[key] = dst[key];
}
}