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在光标位置插入内容的实现代码
Jun 18 Javascript
JQuery 图片滚动轮播示例代码
Mar 24 Javascript
js onmousewheel事件多次触发问题解决方法
Oct 17 Javascript
js识别uc浏览器的代码
Nov 06 Javascript
百度多文件异步上传控件webuploader基本用法解析
Nov 07 Javascript
基于angular实现模拟微信小程序swiper组件
Jun 11 Javascript
详解Js中的模块化是如何实现的
Oct 18 Javascript
Vue-不允许嵌套式的渲染方法
Sep 13 Javascript
Vue axios全局拦截 get请求、post请求、配置请求的实例代码
Nov 28 Javascript
微信小程序学习笔记之登录API与获取用户信息操作图文详解
Mar 29 Javascript
详解key在Vue列表渲染时究竟起到了什么作用
Apr 20 Javascript
Vue 实现把表单form数据 转化成json格式的数据
Oct 29 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
PHP 用数组降低程序的时间复杂度
2009/12/04 PHP
如何使用PHP获取指定日期所在月的开始日期与结束日期
2013/08/01 PHP
使用php清除bom示例
2014/03/03 PHP
php模拟post上传图片实现代码
2016/06/24 PHP
Thinkphp框架开发移动端接口(1)
2016/08/18 PHP
php自定义截取中文字符串-utf8版
2017/02/27 PHP
PHP与JavaScript针对Cookie的读写、交互操作方法详解
2017/08/07 PHP
PHP实现对图片的反色处理功能【测试可用】
2018/02/01 PHP
PHP实现上传图片到数据库并显示输出的方法
2018/05/31 PHP
thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例
2019/07/03 PHP
收集的网上用的ajax之chat.js文件
2007/04/08 Javascript
身份证号码前六位所代表的省,市,区, 以及地区编码下载
2007/04/12 Javascript
jquerydom对象的事件隐藏显示和对象数组示例
2013/12/10 Javascript
浅谈jQuery中对象遍历.eq().first().last().slice()方法
2014/11/26 Javascript
js关于命名空间的函数实例
2015/02/05 Javascript
jQuery实现网站添加高亮突出显示效果的方法
2015/06/26 Javascript
JS和jQuery使用submit方法无法提交表单的原因分析及解决办法
2016/05/17 Javascript
轻松学习Javascript闭包
2017/03/01 Javascript
前端开发之CSS原理详解
2017/03/11 Javascript
详解Layer弹出层样式
2017/08/21 Javascript
JavaScript函数apply()和call()用法与异同分析
2018/08/10 Javascript
JavaScript显式数据类型转换详解
2019/03/18 Javascript
vue使用video.js进行视频播放功能
2019/07/18 Javascript
Vue $emit()不能触发父组件方法的原因及解决
2020/07/28 Javascript
vue中配置scss全局变量的步骤
2020/12/28 Vue.js
vue使用transition组件动画效果的实例代码
2021/01/28 Vue.js
[32:47]完美世界DOTA2联赛 GXR vs IO 第二场 11.07
2020/11/09 DOTA
[01:08:56]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第一场 2月7日
2021/03/11 DOTA
python通过zlib实现压缩与解压字符串的方法
2014/11/19 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
2020/07/07 Python
python 中的命名空间,你真的了解吗?
2020/08/19 Python
教师业务学习制度
2014/01/25 职场文书
财务学生的职业生涯发展
2014/02/11 职场文书
毕业实习感受与体会
2015/05/26 职场文书
golang中的空接口使用详解
2021/03/30 Python
基于Python实现流星雨效果的绘制
2022/03/18 Python