`
liuwuyue
  • 浏览: 22899 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

面试题目解析

阅读更多

周末去一家公司面试,面试官给出了几道题。如下:
1:
   url解析

  考虑用 字符串的split方法。
 代码如下:
   url切割
   输入: http://www.baidu.com?a=1&b=2
   输出: {a:1,b:2}
  
直接切割
          function getPara(url){
var temp = {};
var res = url.split('?')[1];
var paras = res.split('&');
for(var i=0;i<paras.length;i++){
       var currRs =  paras[i].split('=');
        var key = currRs[0];
        var value =  currRs[1];
        temp[key]= value;  
  }
  return temp ;
}

2:  关键词替换
      var desc = 'this is  {name}  , {age}';
var man = {name:'lwyue',age:13};
  代码如下:
    function replaceKeyByObj(a ,b){
    var startSearch = 0 ; //起始搜索位置
    var start =0,end=0;//起始位置
    var lastRs = '';
    while(startSearch<b.length){
            start = b.indexOf('{',startSearch) ,
            end =b.indexOf('}',startSearch) ;//结束搜索位置
            if(start!=-1 && end!=-1){
               lastRs += b.substring(startSearch,start)
               var key = b.substring(start+1,end);
               if(a[key]){
                lastRs +=a[key];
                } else{
                          lastRs +='{'+key+'}';
                }
               startSearch = end+1 ;
            }else {
               lastRs += b.substring(startSearch);
               startSearch = b.length;
           } ;
    }
    return lastRs ;
}

   3: 数组去重
          1:两遍遍历的方法
  Array.prototype.stripe = function(){
      for(var i=0;i<this.length;i++){
     for(var j=i+1;j<this.length;j++){
      if(this[i]===this[j]){
      this.splice(j,1);
  j--;
  }
}
  }
  }

  
     2:转换为对象,用时间复杂度为o(n)时间处理,但是由于 js对象的toString方法,为[object object],导致对象均无法分辨, 此方法对对象无效。
主要是将值变为对象的索引。value-> key值的一次转换。

  Array.prototype.stripe = function(){
     var temp = {};//创建临时对象
for(var i=0;i<this.length;i++){
     if(!temp[this[i]+0]){
     temp[this[i]+0] = true;//标记
       }else {
     this.splice(i,1);
i--;
   }
}
  }

  有局限性 ,只能处理基本类型,对对象类型无能为力。
   

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics