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


Posted in Javascript onJanuary 13, 2017

最近在梳理js的基础,首先从数组和字符串开始。

string 常用方法:

1.substring(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;
         }

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
jquery的冒泡事件的阻止与允许(三种实现方法)
Feb 01 Javascript
通过遮罩层实现浮层DIV登录的js代码
Feb 07 Javascript
Jquery实现由下向上展开效果的例子
Dec 08 Javascript
js实现浏览器窗口大小被改变时触发事件的方法
Feb 02 Javascript
js使用post 方式打开新窗口
Feb 26 Javascript
JavaScript:Date类型全面解析
May 19 Javascript
jQuery判断是否存在滚动条的简单方法
Sep 17 Javascript
Node.js数据库操作之连接MySQL数据库(一)
Mar 04 Javascript
微信小程序中input标签详解及简单实例
May 18 Javascript
JavaScript中的return布尔值的用法和原理解析
Aug 14 Javascript
详解Vue2.0 事件派发与接收
Sep 05 Javascript
微信小程序开发的基本流程步骤
Jan 31 Javascript
使用微信内嵌H5网页解决JS倒计时失效问题
Jan 13 #Javascript
bootstrap按钮插件(Button)使用方法解析
Jan 13 #Javascript
微信小程序 两种滑动方式(横向滑动,竖向滑动)详细及实例代码
Jan 13 #Javascript
bootstrap警告框使用方法解析
Jan 13 #Javascript
微信小程序 详解下拉加载与上拉刷新实现方法
Jan 13 #Javascript
js实现文字向上轮播功能
Jan 13 #Javascript
jQuery实现的省市联动菜单功能示例【测试可用】
Jan 13 #Javascript
You might like
?繁体转换的class
2006/10/09 PHP
来自PHP.NET的入门教程
2006/10/09 PHP
PHP中header和session_start前不能有输出原因分析
2013/01/11 PHP
destoon二次开发模板及调用语法汇总
2014/06/21 PHP
PHP大转盘中奖概率算法实例
2014/10/21 PHP
php自定义加密与解密程序实例
2014/12/31 PHP
laravel 创建命令行命令的图文教程
2019/10/23 PHP
VSCode+PHPstudy配置PHP开发环境的步骤详解
2020/08/20 PHP
Jquery实现无刷新DropDownList联动实现代码
2010/03/08 Javascript
{}与function(){}选用空对象{}来存放keyValue
2012/05/23 Javascript
jquery 选择器引擎sizzle浅析
2013/02/06 Javascript
解析Javascript中大括号“{}”的多义性
2013/12/02 Javascript
Javascript排序算法之合并排序(归并排序)的2个例子
2014/04/04 Javascript
js跨浏览器的事件侦听器和事件对象的使用方法
2015/12/17 Javascript
微信公众号支付H5调用支付解析
2016/11/04 Javascript
AngularJS实现表格的增删改查(仅限前端)
2017/07/04 Javascript
jQuery Autocomplete简介_动力节点Java学院整理
2017/07/17 jQuery
微信小程序switch组件使用详解
2018/01/31 Javascript
angular 实现的输入框数字千分位及保留几位小数点功能示例
2018/06/19 Javascript
微信小程序全选多选效果实现代码解析
2020/01/21 Javascript
Python数据类型详解(三)元祖:tuple
2016/05/08 Python
Python合并字典键值并去除重复元素的实例
2016/12/18 Python
使用 Python 处理 JSON 格式的数据
2019/07/22 Python
关于Python字符串显示u...的解决方式
2020/03/06 Python
详解python日志输出使用配置文件格式
2021/02/10 Python
美国体育用品在线:Modell’s Sporting Goods
2018/06/07 全球购物
日期和时间问题
2015/01/04 面试题
历史学专业大学生找工作的自我评价
2013/10/16 职场文书
咖啡书吧创业计划书
2014/01/13 职场文书
体育教师自我鉴定
2014/02/12 职场文书
信息技术教学反思
2014/02/12 职场文书
函授本科个人自我鉴定
2014/03/25 职场文书
作文批改评语大全
2014/04/23 职场文书
2014年保管员工作总结
2014/11/18 职场文书
同学会演讲稿
2019/04/02 职场文书
FP-growth算法发现频繁项集——构建FP树
2021/06/24 Python