源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

js数组与字符串常用方法总结

  • 时间:2020-07-02 14:59 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:js数组与字符串常用方法总结
最近在梳理js的基础,首先从数组和字符串开始。 [b]string 常用方法:[/b] [b]1.substring(start开始位置的索引,end结束位置索引) 截取的位置不包含结束位置的字符,只写一个参数表示从开始位置截取到最后[/b]
   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 [b]2.slice(start开始位置索引,end结束位置索引) 基本和substring相似,区别在参数为负数。[/b]
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 第二个参数绝对值大于字符串的长度时,返回'' [b]3.substr(start开始位置索引,end需要返回的字符个数)[/b]
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) // ''
[b]4.charAt(index) 方法返回指定索引位置处的字符。如果超出有效范围(0与字符串长度减一)的索引值返回空字符串.[/b]
 var str='abcdefg';
 str.charAt(2) // c
[b]5.index(string)  返回String对象内第一次出现子字符串位置。如果没有找到子字符串,则返回-1。[/b] [code] var str='abcdefga'  str.indexOf('a')  // 0   str.indexOf('h') //-1[/code] [b]6.lastIndexOf(string)  倒叙查找[/b] 返回String对象内第一次出现子字符串位置。如果没有找到子字符串,则返回-1。   [code]var str='abcdefga'     str.lastIndexOf('a') // 7[/code] [b]7.split(str)  将字符串以参数分割为数组[/b] [code]var str='abcadeafg'     str.split('a') //["", "bc", "de", "fg"][/code] [b]8. toLowerCase方法返回一个字符串,该字符串中的字母被转换成小写。[/b] [b]9. toUpperCase方法返回一个字符串,该字符串中的所有字母都被转换为大写字母。[/b] [b]10.match() – 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配 [/b] [b]11.search  方法返回与正则表达式查找内容匹配的第一个字符串的位置。[/b] [b]12.replace 用来查找匹配一个正则表达式的字符串,然后使用新字符串代替匹配[/b] [url=http://www.cnblogs.com/bijiapo/p/5451924.html]http://www.cnblogs.com/bijiapo/p/5451924.html[/url] [b]数组常用的方法[/b] [b]1. push      添加到最后        返回添加后的数组[/b] [b]2. unshift   添加到最前面      返回添加后的数组 [/b] [b]3. shift     删除(从前面)    返回处理后的数组[/b] [b]4. pop       删除最后一项      返回处理后的数组[/b] [b]5. reverse   数组翻转          返回处理后的数组[/b] [b]6. join      数组转化为字符串  [/b]
   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]  原数组未变
[b]7. slice(start,end)     截取数组 从start(开始) 到end(结束 不包含)[/b]                             返回新数组,原数组不变
    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]     
   
[b]8. concat   数组合并[/b] [b]9. splice(开始下标,个数,ele1,ele2....) 剪接数组 [/b]   [b](1).一个参数  从参数位置截取 填写负数类似上面str slice  返回截好的数组 原数组变化[/b]
     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]    
  [b](2).二个参数  截取 (开始位置,个数) 返回截好的数组 原数组变化[/b]
     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()
   [b](3).添加  原数组增加[/b]
     var arr=[1,2,3,4,5];
     console.log(arr.splice(1,0,13)); // []
     console.log(arr);        // [1,13,2,3,4,5]
  [b](4).替换 [/b]
     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)
  [b]10. arr.forEach(item,index,array){}   遍历,循环 类似jquery的each[/b]       其中的item参数是数组中的内容,index为其索引,array表示数组本身
var arr=[1,2,3,4,5];
      arr.forEach(function(item,index,array){
      })
      遇到嵌套跳出循环出现问题,暂时没有解决;   [b]11. map方法        映射 用法和forEach类似[/b]
   var men=[
          {'name':1,'age':12},
          {'name':2,'age':22},
          {'name':3,'age':33}
      ],
      age=men.map(function(item){
          return item.age;
      })
[b]  12. arr.sort  排序[/b]
  var arr=[1,2,22,11,33,3,5,4];
    console.log(arr.sort()) // [1,11,2,22,3,33,4,5] 
      默认情况下sort方法是按ascii字母顺序排序的,而非我们认为是按数字大小排序        [code]arr.sort(function(a,b){ return a-b}) [/code]       a-b从小到大 b-a从大到小   [b]13.  顺便写写我知道的排序方法[/b]     [b](1)冒泡排序  每次比较相邻的两个数,如果后一个数比前一个数小,换位置[/b]
  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
    }
    [b](2)快速排序 二分法,找到中间的数,取出来(新数组),原数组没,每次和此数比较,小的放到左边,大的放到右面[/b]     
 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));
   }   
 
  [b]14. 数组的去重也写下吧[/b]     [b](1)双层循环不是很好[/b]                
    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]);
              }
            }
    [b](2)利用json的key值无重复[/b]              
  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));//类型发生变化了
            }
     [b](3) 利用sort方法排序,去掉旁边相同项[/b]      
   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';            [code]str=str.substring(str.lastIndexOf('.')+1);[/code]         (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)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部