Javascript 用数组元素替换字符串

Javascript 用数组元素替换字符串,javascript,ecmascript-6,Javascript,Ecmascript 6,我想用namearray的元素替换字符串,使字符串变成“我的名字是彼得·帕克” 以下是我处理这个问题的方法- let string = 'My name is [~FIRSTNAME] [~LASTNAME]'; let nameArray = ['Peter', 'Parker']; let patternToBeReplaced = ['[~FIRSTNAME]', '[~LASTNAME]'] 但这并不像预期的那样有效。您正在创建一个字符串模板系统。由于您已经在使用ECAMScript

我想用
namearray
的元素替换
字符串
,使字符串变成
“我的名字是彼得·帕克”

以下是我处理这个问题的方法-

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

但这并不像预期的那样有效。

您正在创建一个字符串模板系统。由于您已经在使用ECAMScript 6语法,因此可以使用新的内置模板文本

patternToBeReplaced.forEach(function (match, index) {
        var output = string.replace(match, nameArray[index]);
});
let[FIRSTNAME,LASTNAME]=['Peter','Parker'];
让string=`我的名字是${FIRSTNAME}${LASTNAME}`;
console.log(字符串)您可以在下一次替换中使用和使用该字符串

let string='我的名字是[~FIRSTNAME][~LASTNAME]';
让nameArray=['Peter','Parker'];
让patterntobereplace=['[~FIRSTNAME]','[~LASTNAME]']
string=patternToBeReplaced.reduce((s,m,i)=>s.replace(m,nameArray[i]),string);
console.log(字符串)类似的东西

let str='我的名字是[~FIRSTNAME][~LASTNAME]';
让nameArray=['Peter','Parker'];
让patterntobereplace=['[~FIRSTNAME]','[~LASTNAME]']
const result=patternToBeReplaced.reduce((str,占位符,i)=>{
返回str.replace(占位符,nameArray[i]);
},str);
控制台日志(结果)
  • output
    是一个局部变量,仅声明它是无用的
  • replace(String,String)
    只会替换第一个匹配的模式
  • 以下是我的解决方案:

    patternToBeReplaced.forEach(function (match, index) {
        string = string.replace(match, nameArray[index]);
    });
    

    第一个解决方案,保留基本代码:

    let replaceWithArrayElements = (patterns, replacements, targetString) => {
        patterns.forEach((pattern, i) => targetString = targetString.replace(new RegExp(pattern, 'g')));
        return targetString;
    }
    
    使用
    映射

    let string = 'My name is [~FIRSTNAME] [~LASTNAME]';
    let nameArray = ['Peter', 'Parker'];
    let patternToBeReplaced = ['[~FIRSTNAME]', '[~LASTNAME]'];
    patternToBeReplaced
    .forEach((match, i)=>{
      string = string
               .replace(match, nameArray[i]);
    });
    
    使用ES6“模板”字符串:


    您可以根据需要使用上述代码

    您需要更新字符串变量。。。。但是让我们有块级别的范围。。。因此,请使用箭头函数代替Yes,
    string=string。替换(…
    尝试使用
    reduce
    而不是
    forEach
    let string = 'My name is [~FIRSTNAME] [~LASTNAME]';
    let replaceMap = new Map();
    replaceMap.set('[~FIRSTNAME]', 'Peter');
    replaceMap.set('[~LASTNAME]', 'Parker');
    replaceMap.forEach((key, value)=>{
      string = string.replace(key, value);
    });
    
    /*
    *Have some ways of getting the first name in "firstName"
    *Have some ways of getting the last name in "lastName"
    */
    let string = `My name is ${firstName} ${lastName}`;
    
    string.match(/\[~\w+\]/g).forEach((item,index)=>{
      string = string.replace(item, nameArray [index])
    })