var expandEntityResult = function(data, map) { var replacer = function(match, p1, offset, value) { return map[p1]; }; var replace = function(value) { var keys = Object.keys(map).join('|'); var regexp = new RegExp('^(' + keys + ')\:'); return value.replace(regexp, replacer); }; var traverse = function(o, func) { for (var i in o) { if (o[i] !== null) { if (typeof(o[i]) === 'object') { traverse(o[i], func); } else if (typeof(o[i]) === 'string') { o[i] = func(o[i]); } } } }; traverse(data, replace); return data; };