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 相关文章推荐
火狐浏览器(firefox)下获得Event对象以及keyCode
Nov 13 Javascript
StringTemplate遇见jQuery冲突的解决方法
Sep 22 Javascript
javascript制作loading动画效果 loading效果
Jan 14 Javascript
使用delegate方法为一个tr标签加一个链接
Jun 27 Javascript
深入理解JavaScript系列(50):Function模式(下篇)
Mar 04 Javascript
在线所见即所得HTML编辑器的实现原理浅析
Apr 25 Javascript
JS仿京东移动端手指拨动切换轮播图效果
Apr 10 Javascript
微信小程序之绑定点击事件实例详解
Jul 07 Javascript
Vue.set()实现数据动态响应的方法
Feb 07 Javascript
Vue插槽原理与用法详解
Mar 05 Javascript
小程序server请求微信服务器超时的解决方法
May 21 Javascript
Vue接口封装的完整步骤记录
May 14 Vue.js
使用微信内嵌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 Global变量定义当前页面的全局变量实现探讨
2013/06/05 PHP
php中simplexml_load_string使用实例分享
2014/02/13 PHP
Yii2中DropDownList简单用法示例
2016/07/18 PHP
jquery时间下拉框小例子
2013/04/15 Javascript
jquery及原生js获取select下拉框选中的值示例
2013/10/25 Javascript
js获取触发事件元素在整个网页中的绝对坐标(示例代码)
2013/12/13 Javascript
js简单的点击返回顶部效果实现方法
2015/04/10 Javascript
jQuery position() 函数详解以及jQuery中position函数的应用
2015/12/14 Javascript
微信小程序-详解数据缓存
2016/11/24 Javascript
vue.js的手脚架vue-cli项目搭建的步骤
2017/08/30 Javascript
vue中$refs的用法及作用详解
2018/04/24 Javascript
微信小程序日期选择器实例代码
2018/07/18 Javascript
create-react-app安装出错问题解决方法
2018/09/04 Javascript
django使用channels2.x实现实时通讯
2018/11/28 Javascript
mpvue性能优化实战技巧(小结)
2019/04/17 Javascript
浅谈react-router@4.0 使用方法和源码分析
2019/06/04 Javascript
详解vue路由
2020/08/05 Javascript
原生JavaScript实现弹幕组件的示例代码
2020/10/12 Javascript
vue打包通过image-webpack-loader插件对图片压缩优化操作
2020/11/12 Javascript
Python2.x与Python3.x的区别
2016/01/14 Python
python中将函数赋值给变量时需要注意的一些问题
2017/08/18 Python
python数字图像处理实现直方图与均衡化
2018/05/04 Python
纯用NumPy实现神经网络的示例代码
2018/10/24 Python
Pycharm 设置默认头的图文教程
2019/01/17 Python
python+os根据文件名自动生成文本
2019/03/21 Python
Python如何使用Gitlab API实现批量的合并分支
2019/11/27 Python
Python读写压缩文件的方法
2020/07/30 Python
python使用正则表达式匹配txt特定字符串(有换行)
2020/12/09 Python
洛杉矶时尚女装系列:J.ING US
2019/03/17 全球购物
利物浦足球俱乐部官方商店(美国):Liverpool FC US
2019/10/09 全球购物
财务管理专业应届毕业生求职信
2013/09/22 职场文书
大学生求职自荐信
2013/12/12 职场文书
清洁工岗位职责
2014/01/29 职场文书
网吧最新创业计划书范文
2014/03/27 职场文书
平安建设工作方案
2014/06/02 职场文书
win10截图快捷键win+shift+s没有反应无法截图怎么解决?
2022/08/14 数码科技