将字符串替换为数组元素

Jab*_*yuS 3 javascript ecmascript-6

let string = 'My name is [~FIRSTNAME] [~LASTNAME]';
let nameArray = ['Peter', 'Parker'];
let patternToBeReplaced = ['[~FIRSTNAME]', '[~LASTNAME]']
Run Code Online (Sandbox Code Playgroud)

我想用string的元素替换namearray,使字符串变成'My name is Peter Parker'

以下是我解决这个问题的方法 -

patternToBeReplaced.forEach(function (match, index) {
        var output = string.replace(match, nameArray[index]);
});
Run Code Online (Sandbox Code Playgroud)

但这并没有按预期工作。

Nin*_*olz 5

您可以使用Array#reduce该字符串进行下一次替换。

let string = 'My name is [~FIRSTNAME] [~LASTNAME]';
let nameArray = ['Peter', 'Parker'];
let patternToBeReplaced = ['[~FIRSTNAME]', '[~LASTNAME]']

string = patternToBeReplaced.reduce((s, m, i) => s.replace(m, nameArray[i]), string);

console.log(string);
Run Code Online (Sandbox Code Playgroud)