everycode
everycode copied to clipboard
2015年3月31日,来做一道前端笔试题
/**
* @fileoverview 为字符串实现一个render方法,实现下面的变量替换功能
**/
var greeting = 'my name is $(name),age $(age)';
var result = greeting.render({name:'XiaoMing',age:11});
console.log(result); // my name is XiaoMing,age 11
String.prototype.render = function(option){
var s = this,
reg;
Object.keys(option).forEach(function(k){
reg = new RegExp("\\$\\("+k+"\\)","g");
s = s.replace(reg,option[k])
});
return s
};
var greeting = 'my name is $(name),age $(age)';
var result = greeting.render({name:'XiaoMing',age:11});
console.log(result); // my name is XiaoMing,age 11
String.prototype.render = function (obj) {
var str = this, reg;
Object.keys(obj).forEach(function (v) {
reg = new RegExp('\\$\\('+ v +'\\)', 'g');
str = str.replace(reg, obj[v]);
});
return str;
}
var greeting = 'my name is $(name),age $(age)';
var result = greeting.render({name:'XiaoMing',age:11});
console.log(result); // my name is XiaoMing,age 11
感觉会有bug。
@think2011 举个栗子?⊙﹏⊙
@VaJoy做过类似的题目,但是没通过测试,也是上面那样写的.. 后来没做完,有空找找那道题。
String.prototype.render = function(obj){
var temp = this;
for (var p in obj) {
var reg = new RegExp('\\$\\(' + p + '\\)', 'g');
temp = temp.replace(reg, obj[p]);
}
return temp;
}
我就传个low low的做法吧
es6的字符串吧
var obj = {name:'XiaoMing',age:11}
`my name is ${obj.name},age ${obj.age}`
String.prototype.render=function(object){
return this.replace(/(?:\$\()(\w+)(?:\))/g,function(all,word){
return object[word]||''
});
};