猿问

正则表达式实现render函数

请问下为什么没替换成功?


打印信息为:

name

/${name}/ 'xiaoming'

the age of ${name} is ${age}

age

/${age}/ 8

the age of ${name} is ${age}


const template = "the age of ${name} is ${age}";

const data = { name: "xiaoming", age: 8};

console.log(render(template, data));

// 输出: "the age of xiaoming is 8"


function render(template,data) {

  for (key in data) {

    if(key) {

      console.log(key);

      var re = new RegExp("\$\{"+key+"\}");

      console.log(re,data[key]);

      var ans = template.replace(re,data[key]);

      // console.log("test:",template.replace("${name}","xiaoming"));

      console.log(ans); 

    }

    

  }

}


富国沪深
浏览 487回答 2
2回答

慕桂英546537

const template = "the age of ${name} is ${age}";const data = { name: "xiaoming", age: 8};console.log(render(template, data));function render(template,data) {  var reg = /\$\{(\w*)\}/g;    return template.replace(reg,function(a,b){    var val = data[b];    //可以抛出错误也可以给个默认空字符串    if(val===undefined)throw new TypeError('Cannot read property "'+b+'" of undefined');    return val;  })}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答