I have a basic replace function, but I need it to perform a global replace, as it seems to be stopping on the first instance. I do not want to do it with a Regex. Applying the global attribute seems easy enough in most examples, but I am passing in a variable as the value to be replaced, and /g is having no impact. What am I doing wrong? Here is the example without the /g:
test string
"Why is my ^%friend so ^%? Maybe I need a ^!% one, abrand^!% one"
Simple replace function
function translate(oddStr) {
    var tagDictionary = {};
        tagDictionary['^%'] = 'odd';
        tagDictionary['^!%'] = 'new';
    Object.keys(tagDictionary).forEach( function (tag) {
        oddStr = oddStr.replace(tag, tagDictionary[tag]);
    });
    return oddStr;
};
This function returns the first instance of each replaced, as expected. How can I apply /g to the tag variable in the forEach?
 
     
     
     
    