everycode icon indicating copy to clipboard operation
everycode copied to clipboard

2015年3月31日,来做一道前端笔试题

Open xuyuan923 opened this issue 10 years ago • 8 comments

/**
 * @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

xuyuan923 avatar Mar 31 '15 12:03 xuyuan923

    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

VaJoy avatar Mar 31 '15 13:03 VaJoy

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 avatar Mar 31 '15 13:03 think2011

@think2011 举个栗子?⊙﹏⊙

VaJoy avatar Mar 31 '15 13:03 VaJoy

@VaJoy做过类似的题目,但是没通过测试,也是上面那样写的.. 后来没做完,有空找找那道题。

think2011 avatar Mar 31 '15 13:03 think2011

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;
}

lzzwoodtree avatar Mar 31 '15 13:03 lzzwoodtree

我就传个low low的做法吧

lzzwoodtree avatar Mar 31 '15 13:03 lzzwoodtree

es6的字符串吧

var obj = {name:'XiaoMing',age:11}
`my name is ${obj.name},age ${obj.age}`

qingo avatar Aug 04 '15 01:08 qingo


String.prototype.render=function(object){

   return this.replace(/(?:\$\()(\w+)(?:\))/g,function(all,word){
        return object[word]||''
    });

};

singone avatar Aug 18 '15 02:08 singone