使用javascript中key:value对数组中的值替换string中的键

ada*_*amK 3 javascript jquery

我想知道是否有人可以帮我一个简单的解决方案,将javascript字符串中的每个整数转换为一个键:值对数组中的相应键.例如,如果我有:

var arr = {'3':'value_three', '6':'value_six', '234':'other_value'};
var str = 'I want value 3 here and value 234 here';
Run Code Online (Sandbox Code Playgroud)

我会将输出解释为:

new_str = 'I want value_three here and value other_value here'
Run Code Online (Sandbox Code Playgroud)

对不起,这是我的第一篇文章,所以我希望这是有道理的,我正在使用javascript和jquery(最新版本).任何帮助都会非常感激.

Eli*_*Eli 6

我只是在我的头顶做这个,但这应该工作.

var new_str = str;

for (var key in arr) {
    if (!arr.hasOwnProperty(key)) {
        continue;
    }

    new_str = new_str.replace(key, arr[key]);
}
Run Code Online (Sandbox Code Playgroud)

如果您希望替换所有出现的数字,则需要将Regex合并到混合中:

var new_str = str;

for (var key in arr) {
    if (!arr.hasOwnProperty(key)) {
        continue;
    }

    new_str = new_str.replace(new RegExp(key, "g"), arr[key]);
}
Run Code Online (Sandbox Code Playgroud)

另外,我会选择另一个名称arr,因为这意味着当它显然是一个对象时它是一个数组.此外,请确保仅for-in在对象上使用循环,而不是阵列,因为原型泄漏等问题.

你也可以用jQuery做到这一点,但它可能有点过分:

var new_str = str;

$.each(arr, function (key, value) {
    new_str = new_str.replace(key, value);
});
Run Code Online (Sandbox Code Playgroud)