Javascript 仅使用最后一个元素替换字符串的数组

Javascript 仅使用最后一个元素替换字符串的数组,javascript,jquery,arrays,Javascript,Jquery,Arrays,我有以下代码: $(document).on('click','.submitMessage,.submitStdMessage', function(e){ prevContent=$('textarea').val(); alert(prevContent); variables = { '{nom}' : 'Manuel', '{apl}' : 'García', '{var1}' : 'chi

我有以下代码:

$(document).on('click','.submitMessage,.submitStdMessage', function(e){
    prevContent=$('textarea').val();
    alert(prevContent);
    variables = {
            '{nom}' : 'Manuel',
            '{apl}' : 'García',
            '{var1}' : 'chips',
            '{var2}' : 'deportes y aventura',
            '{var3}' : 'informática y tecnología',
            '{cst1}' : 'Serrano, 28',
            '{cst2}' : 'Plaza del carmen, 32',
            '{cst3}' : 'García Luna, 15'
        };

        $.each(variables, function (key, value) {
             newContent = prevContent.replace(key, value);
        });
        alert(newContent);
    });
当传递这样的字符串时:

{nom}{var2}{cst2}{cst1}{cst3}

第一个警报说:

{nom}{var2}{cst2}{cst1}{cst3}

第二个警报说:

{nom}{var2}{cst2}{cst1}加西亚·卢纳,15岁


如果我更改
variables
数组中元素的顺序,它总是替换数组最后一个位置上的变量集。我需要它来替换发送的所有变量。

好的
prevContent
永不更改。您需要更新它,而不是另一个变量:

// Always declare local variables with var!!! 
var prevContent=$('textarea').val();
alert(prevContent);
var variables = {
        '{nom}' : 'Manuel',
        '{apl}' : 'García',
        '{var1}' : 'chips',
        '{var2}' : 'deportes y aventura',
        '{var3}' : 'informática y tecnología',
        '{cst1}' : 'Serrano, 28',
        '{cst2}' : 'Plaza del carmen, 32',
        '{cst3}' : 'García Luna, 15'
    };

    $.each(variables, function (key, value) {
         prevContent = prevContent.replace(key, value);
    });
    alert(prevContent);

replace通常与RegEx一起工作(您可以在这里查看更多信息),所以如果您将字符串作为参数传递,它将只替换一个匹配项


你可以使用“mystring.split”(“wordToReplace”).join(“whatToReplaceWith”)

解决了。我7分钟后打勾。非常感谢。这是一个很好的观点——这些搜索模式将被解释为正则表达式。在这种情况下,OP模式都可以正常工作,但如果其中包含类似于
*
的内容,则会出现意外结果。