字符串相关

字符串去重:

思路:
1.创建一个新的数组存放结果
2.创建一个空对象
3.for循环时,每次取出一个元素与对象进行对比,如果这个元素不重复,则把它存放到结果数组中,同时把这个元素的内容作为对象的一个属性,并赋值为1,存入到第2步建立的对象中。
说明:至于如何对比,就是每次从原数组中取出一个元素,然后到对象中去访问这个属性,如果能访问到值,则说明重复。

代码实现:

Array.prototype.unique3 = function(){
 var res = [];
 var json = {};
 for(var i = 0; i < this.length; i++){
  if(!json[this[i]]){
   res.push(this[i]);
   json[this[i]] = 1;
  }
 }
 return res;
}
var arr = [112,112,34,'你好',112,112,34,'你好','str','str1'];
alert(arr.unique3());  //112,34,你好,str,str1

除去字符串中的重

function dropRepeat(str){
 var result=[];
 var hash={};
 for(var i=0, elem; i<str.length;i++){
  elem=str[i];
  if(!hash[elem]){
   hash[elem]=true;
   result=result+elem;
  }
 }
 return  result;
}
alert(dropRepeat("ascddddaaarrfdrbcdd")); //ascdrfb;

:思路与上述一样,在此就不过多重复。


查找一个字符串中所有子串的位置

  通过循环调用indexOf()或lastIndexOf()来找到所有匹配的子字符串。
  上面两个方法都是从一个字符串中搜索给定的子字符串,然后返回子字符串的位置(如果没有找到子字符串,则返回-1)。这两个方法的区别在于:indexOf()方法从字符串的开头向后搜索子字符串,而lastIndexOf()方法是从字符串的末尾向前搜索子字符串。
  这两个方法都可以接收可选的第二个参数,表示从字符串中的那个位置开始搜索。换句话说,indexOf()会从该参数指定的位置向后搜索,忽略该位置之前的所有字符;lastIndexOf()类似。

思路:通过不断增加indexOf()方法开始查找的位置,遍历了一个长字符串。在循环之外,首先找到了”o”在字符串中的初始位置;而进入循环后,则每次都给indexOf()传递上一次的位置加1。这样就确保了每次新搜索都从上一次找到的子字符串的后面开始。每次搜索返回的位置被保存在数组positions中,以便将来使用。

代码实现:

var str = "I think of other ages that floated upon the stream of life and love and death";
function searchSubStr(str,subStr){
    var positions = new Array();  //定义数组存放位置
    var pos = str.indexOf(subStr); //返回首次位置
    while(pos>-1){
        positions.push(pos);
        pos = str.indexOf(subStr,pos+1);
    }
    return positions;
}
alert(searchSubStr(str,"o")); //8,11,29,37,51,64

在给定字符串中查找子子符串,并返回相应的位置,否则返回-1

代码实现:

function indexOf(arr, item) {
    if( Array.prototype.indexOf){
        return arr.indexOf(item);
    }
   else{
      for(var i=0; i<arr.len; i++){
         if(item==arr[i]){
             return i;
          }  
       }   
    }
 return -1;
}

字符串压缩

这里写图片描述


字符串方法

Method描述
charAt()返回指定索引位置的字符
charCodeAt()返回指定索引位置字符的 Unicode 值
concat()连接两个或多个字符串,返回连接后的字符串
fromCharCode()将字符转换为 Unicode 值
indexOf()返回字符串中检索指定字符第一次出现的位置
lastIndexOf()返回字符串中检索指定字符最后一次出现的位置
localeCompare()用本地特定的顺序来比较两个字符串
match()找到一个或多个正则表达式的匹配
replace()替换与正则表达式匹配的子串
search()检索与正则表达式相匹配的值
slice()提取字符串的片断,并在新的字符串中返回被提取的部分
split()把字符串分割为子字符串数组
substr()从起始索引号提取字符串中指定数目的字符
substring()提取字符串中两个指定的索引号之间的字符
toLocaleLowerCase()根据主机的语言环境把字符串转换为小写,只有几种语言(如土耳其语)具有地方特有的大小写映射
toLocaleUpperCase()根据主机的语言环境把字符串转换为大写,只有几种语言(如土耳其语)具有地方特有的大小写映射
toLowerCase()把字符串转换为小写
toString()返回字符串对象值
toUpperCase()把字符串转换为大写
trim()移除字符串首尾空白
valueOf()返回某个字符串对象的原始值

前端面试题链接:http://www.jobui.com/mianshiti/it/web/5066/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值