每日一题:实现模板字符串解析
发表于:2024-12-10
字数统计:367 字
预计阅读2分钟
挑战介绍
本节我们来挑战一道大厂面试真题 —— 实现模板字符串解析。
挑战准备
新建一个 strRender.js 文件,在文件里写一个名为 strRender 的函数,并导出这个函数,如下图所示:

这个文件在环境初始化时会自动生成,如果发现没有自动生成就按照上述图片自己创建文件和函数,函数代码如下:
js
function strRender(str, data) {
// 补充代码
}
module.exports = strRender;挑战内容
请封装一个 strRender 函数,用来实现模板字符串解析功能。
strRender 函数接收两个参数,第一个参数是模板字符串 str,第二个参数是需要传入的 data,最终返回一个把模板中的变量替换了的新字符串。
示例:
js
const str = "My name is ${name}, I am ${age} years old, I come from ${country}";
const data = {
name: "zhangsan",
age: "18",
country: "China",
};
console.log(strRender(str, data)); // 'My name is zhangsan, I am 18 years old, I come from China'注意事项
- 文件名、函数名不可随意更改。
- 文件中编写的函数需要导出,否则将无法提交通过。
题解
js
function strRender(str, data) {
const regexp1 = /(?<={)(.*?)(?=})/gm
const regexp2 = /\${(.*?)}/m
let match2 = str.match(regexp1)
for(let i = 0; i < match2.length; i++) {
str = str.replace(regexp2,data[match2[i]])
}
return str
}