数组和字符串常用方法总结

来源:互联网 发布:淘宝商家放单微信群 编辑:程序博客网 时间:2024/06/06 02:32
string 常用方法:
        
        1.substrng(start开始位置的索引,end结束位置索引) 截取的位置不包含结束位置的字符,只写一个参数表示从开始位置截取到最后
                var str='abcdefg';  
                
                str.substring(1)  //得到bcdefg    str.substring(1,3)  //得到bc

                输入负值时将负值变为0,哪个较小作为开始位置

                str.substing(-1,1)  =>str.substring(0,1) //a
                str.substring(1,-2) =>str.substring(0,1) //a

        2.slice(start开始位置索引,end结束位置索引) 基本和substring相似,区别在参数为负数。

            var str='abcdefg'; 

            str.slice(1)   //bcdefg           str.substring(1,3) // bc

            输入负值时 值与字符串的长度相加

            str.slice(-1)          =>str.slice(6)    //g
                str.slice(1,-2) =>str.slice(1,5)  //bcde
                str.slice(-2,-1)=>str.slice(5,6)  //f
                值绝对值大于字符串的长度时变为 0

                str.slice(-22) =>str.substring(0)  //abcdefg

        第二个参数绝对值大于字符串的长度时,返回''

    3.substr(start开始位置索引,end需要返回的字符个数)

            var str='abcdefg'; 

            str.substr(1)  //bcdefg            str.substr(1,1)  //b

        输入负值时 start参数与字符串的长度相加 ,end为负时参数变为0

        str.substr(-1) =>str.substr(6)//g                 

        str.substr(-2,-3)  // ''

    4.charAt(index) 方法返回指定索引位置处的字符。如果超出有效范围(0与字符串长度减一)的索引值返回空字符串.

        var str='abcdefg';

        str.charAt(2)  // c

    5.index(string)  返回String对象内第一次出现子字符串位置。如果没有找到子字符串,则返回-1。

        var str='abcdefga'  str.indexOf('a')  // 0   str.indexOf('h') //-1


    6.lastIndexOf(string)  倒叙查找

     返回String对象内第一次出现子字符串位置。如果没有找到子字符串,则返回-1。   


        var str='abcdefga'     str.lastIndexOf('a') // 7

    7.split(str)  将字符串以参数分割为数组
    
       var str='abcadeafg'     str.split('a') //["", "bc", "de", "fg"]
    8. toLowerCase方法返回一个字符串,该字符串中的字母被转换成小写。

    
    9. toUpperCase方法返回一个字符串,该字符串中的所有字母都被转换为大写字母。

    10.match() – 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配 


    11.search  方法返回与正则表达式查找内容匹配的第一个字符串的位置。


    12.replace 用来查找匹配一个正则表达式的字符串,然后使用新字符串代替匹配


    http://www.cnblogs.com/bijiapo/p/5451924.html


数组常用的方法

    1. push      添加到最后        返回添加后的数组

    2. unshift   添加到最前面      返回添加后的数组 

    3. shift     删除(从前面)    返回处理后的数组

    4. pop       删除最后一项      返回处理后的数组

    5. reverse   数组翻转          返回处理后的数组

    6. join      数组转化为字符串  
  
       var arr=[1,2,3,4,5],  str=arr.join('--'); 

       console.log(str);  // 1--2--3--4--5  以join内的参数切割数组

       console.log(arr);  // [1,2,3,4,5]    原数组未变


    7. slice(start,end)     截取数组 从start(开始) 到end(结束 不包含)
                            
                            返回新数组,原数组不变

        var arr=[1,2,3,4,5],new=arr.slice(2,4);
        
        console.log(new);   // [3,4]
        console.log(arr);   // [1,2,3,4,5]                      

    8. concat   数组合并


    9. splice(开始下标,个数,ele1,ele2....) 剪接数组 

       (1).一个参数  从参数位置截取 填写负数类似上面str slice  返回截好的数组 原数组变化
         var arr=[1,2,3,4,5];

         console.log(arr.splice(1));   // [2,3,4,5]
         console.log(arr);             // [1]
         console.lgo(arr.splice(-1))   // [5]        
       (2).二个参数  截取 (开始位置,个数) 返回截好的数组 原数组变化

         var arr=[1,2,3,4,5];

         console.log(arr.splice(1,3)); //  [2,3,4]
         console.log(arr)              //  [1,5]
         arr.splice(0,1) =>arr.shift()

         arr.splcie(arr.length-1,1)  =>arr.pop()

       (3).添加  原数组增加

         var arr=[1,2,3,4,5];

         console.log(arr.splice(1,0,13)); // []
         console.log(arr);                // [1,13,2,3,4,5]
       (4).替换 
       
         var arr=[1,2,3,4,5];

         console.log(arr.splice(1,2,'a','b')) // [2,3]
         console.log(arr);                // [1,'a','b',4,5]

         arr.splice(0,0,1) =>arr.unshift(1);

         arr.splice(arr.length,0,1) => arr.push(1)

    10. arr.forEach(item,index,array){}   遍历,循环 类似jquery的each

            其中的item参数是数组中的内容,index为其索引,array表示数组本身

            var arr=[1,2,3,4,5];
            arr.forEach(function(item,index,array){

            })

            遇到嵌套跳出循环出现问题,暂时没有解决;

    11. map方法        映射 用法和forEach类似

            var men=[
                    {'name':1,'age':12},
                    {'name':2,'age':22},
                    {'name':3,'age':33}
            ],
            
            age=men.map(function(item){
                    return item.age;
            })

    12. arr.sort  排序

        var arr=[1,2,22,11,33,3,5,4];

        console.log(arr.sort()) // [1,11,2,22,3,33,4,5] 

        默认情况下sort方法是按ascii字母顺序排序的,而非我们认为是按数字大小排序

        arr.sort(function(a,b){ return a-b}) 

        a-b从小到大 b-a从大到小 


    13.  顺便写写我知道的排序方法

        (1)冒泡排序  每次比较相邻的两个数,如果后一个数比前一个数小,换位置

         function bSort(arr){
            var tmp;
            for(var i=0,len=arr.length-1;i<len;i++){
                for(var j=0;j<len;j++){
                    if(arr[j]>arr[j+1]){
                        //换位置
                        tmp=arr[j+1];
                        arr[j+1]=arr[j];
                        arr[j]=tmp;
                    }
                }
            }
            return arr;
        } 

        function bSort(arr){
            var tmp;
            arr.forEach(function(item,i){
                arr.forEach(function(item,i){
                    if(item>arr[i+1]){
                        //换位置
                        tmp = arr[i + 1];
                        arr[i + 1] = arr[i];
                        arr[i] = tmp;
                    }
                })
            })
            return arr
        }

        (2)快速排序 二分法,找到中间的数,取出来(新数组),原数组没,每次和此数比较,小的放到左边,大的放到右面

         function fastSoft(arr){
                var len=arr.length;
                if(len<=1){ return arr}
                var   cIndex=Math.floor(len/2),
                      c=arr.splice(c,1),
                      left=[],
                      right=[];
                arr.forEach(function(item,i){
                        if(item<c[0]){
                        left.push(item);
                    }else{
                        right.push(item);
                    }
                })
          return fastSoft(left).concat(c,fastSoft(right));
      }
        
    14. 数组的去重也写下吧

        (1)双层循环不是很好

                        var arr=[2,3,2,2,2,4,5],
                    arr2=[];
                        function find(arr2,ele){
                          for(var i= 0,len=arr2.length;i<len;i++){
                              if(arr2[i]==ele) return true;
                          }
                            return false;
                        }

                        for(var i= 0,len=arr.length;i<len;i++){
                            if(!find(arr2,arr[i])){
                                arr2.push(arr[i]);
                            }
                        }

            (2)利用json的key值无重复

                   var arr=[2,3,2,2,2,4,5],
                   json={},
                   arr2=[];

                        arr.forEach(function(item,i){
                            if(!json[item]){
                                json[item]=222;
                            }
                        });
                        for(var name in json){
                            arr2.push(Number(name));//类型发生变化了
                        }

         (3) 利用sort方法排序,去掉旁边相同项

            var arr=[2,3,2,4,4,4,5],
            arr2=[];
                arr.sort();
                for(var i=0;i<arr.length;i++){
                    if(arr[i]==arr[i+1]){
                        arr.splice(i--,1);
                    }
                }

        一些常见数学方法
                math.abs() 取绝对值   math.ceil() 向上取整  math.floor() 向下取整
                math.round() 四舍五入 math.roundom
        
        function getRan(n,m){
            return Math.floor(Math.random()*(m-n)+n);
        } 
      
        数组和字符串的一些综合应用
                1. 截取后缀名
           
                  (1) var str='1.xxx.avi';
           str=str.substring(str.lastIndexOf('.')+1);
          (2) var str='1.xxx.avi';
     
                var arr=str.split('.');
          
                console.log(arr[arr.length-1]);

                2.字母翻转,首字母大写

                   var str='wo shi yi ge demo',
               arr=str.split(' ');
               for(var i=0;i<arr.length;i++){
                   console.log()
                  arr[i]=arr[i].charAt(0).toUpperCase()+arr[i].substring(1);
               }
               arr.reverse();
               str=arr.join(' ');

            3. str中字符出现次数的统计

                    var str='aaaandkdffsfsdfsfssq12345',
                json={},
                n= 0,
                sName;

                for(var i= 0,len=str.length;i<len;i++){
                    var Letter=str.charAt(i);
                    //统计次数
                    if(json[Letter]){
                        json[Letter]++;
                    }else{
                        json[Letter]=1;
                    }
                }
                //找最大
                for(var name in json){
                    if(json[name]>n){
                        n=json[name];
                        sName=name;
                    }
                }
                console.log('出现最多的字母'+sName+'次数为'+n);

            4.  简单的url参数解析

                  function getData() {
                    var search = window.location.search.substring(1);
                    if (!search) {
                        return;
                    }
                    var arr = search.split('&'),
                            arr2 = [],
                            json = {},
                            key,
                            alue;
                    for (var i = 0; i < arr.length; i++) {
                        arr2 = arr[i].split('=');

                        key = arr2[0];
                        value = arr2[1];
                        json[key] = value;
                    }

                    return json;
                  }
0 0