Personally, I would do it like this.
function renameKeys(arr, nameMap) { // loop around our array of objects for(var i = 0; i < arr.length; i++) { var obj = arr[i]; // loop around our name mappings for(var j = 0; j < nameMap.length; j++) { var thisMap = nameMap[j]; if(obj.hasOwnProperty(thisMap.from)) { // found matching name obj[thisMap.to] = obj[thisMap.from]; delete obj[thisMap.from]; } } } }
You would call it where myArray is your array of objects.
renameKeys(myArray, [ {from: "id", to: "num" }, { from: "name", to: "fullname" } ]);
It has the advantage that it can be reused for any number of re-name mappings. Does not modify its own prototypes. And it only repeats itself once around the array, regardless of how many repeated mappings occur.
source share