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 相关文章推荐
精通Javascript系列之Javascript基础篇
Jun 07 Javascript
JQuery扩展插件Validate 3通过参数设置错误信息
Sep 05 Javascript
JQuery简单实现锚点链接的平滑滚动
May 03 Javascript
Extjs让combobox写起来简洁又漂亮
Jan 05 Javascript
jQuery Masonry瀑布流布局神器使用详解
May 25 jQuery
vue子组件使用自定义事件向父组件传递数据
May 27 Javascript
20个最常见的jQuery面试问题及答案
May 23 jQuery
自己动手封装一个React Native多级联动
Sep 19 Javascript
一些手写JavaScript常用的函数汇总
Apr 16 Javascript
微信小程序上线发布流程图文详解
May 06 Javascript
JavaScript判断对象和数组的两种方法
May 31 Javascript
javascript中call,apply,bind的区别详解
Dec 11 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
dedecms中常见问题修改方法总结
2007/03/21 PHP
php学习 字符串课件
2008/06/15 PHP
帝国cms常用标签汇总
2015/07/06 PHP
php strftime函数的详细用法
2018/06/21 PHP
javascript Firefox与IE 替换节点的方法
2010/02/24 Javascript
js捕获鼠标右键菜单中的粘帖事件实现代码
2013/04/01 Javascript
document.documentElement和document.body区别介绍
2013/09/16 Javascript
用JQuery实现全选与取消的两种简单方法
2014/02/22 Javascript
javascript轻量级模板引擎juicer使用指南
2014/06/22 Javascript
DOM 事件流详解
2015/01/20 Javascript
JavaScript使用cookie记录临时访客信息的方法
2015/04/07 Javascript
浅谈javascript中的闭包
2015/05/13 Javascript
Bootstrap每天必学之按钮
2015/11/26 Javascript
基于BootStrap的Metronic框架实现页面链接收藏夹功能按钮移动收藏记录(使用Sortable进行拖动排序)
2016/08/29 Javascript
D3.js实现散点图和气泡图的方法详解
2016/09/21 Javascript
JavaScript中的垃圾回收与内存泄漏示例详解
2019/05/02 Javascript
Angular 多模块项目构建过程
2020/02/13 Javascript
vue 虚拟DOM的原理
2020/10/03 Javascript
Python自动化运维和部署项目工具Fabric使用实例
2016/09/18 Python
python 实现数组list 添加、修改、删除的方法
2018/04/04 Python
python内置数据类型之列表操作
2018/11/12 Python
详解python算法之冒泡排序
2019/03/05 Python
python3应用windows api对后台程序窗口及桌面截图并保存的方法
2019/08/27 Python
CSS3的Border-radius轻松制作圆角
2012/12/24 HTML / CSS
基于 HTML5 WebGL 实现的垃圾分类系统
2019/10/08 HTML / CSS
HTML5单选框、复选框、下拉菜单、文本域的实现代码
2020/12/01 HTML / CSS
BookOutlet加拿大:在网上书店购买廉价折扣图书和小说
2018/10/05 全球购物
高一自我鉴定
2013/12/17 职场文书
高三自我评价
2014/02/01 职场文书
会计专业应届生自荐信
2014/02/07 职场文书
商务日语专业毕业生自荐信
2014/03/27 职场文书
计算机专业应届生求职信
2014/04/06 职场文书
判缓刑人员个人思想汇报
2014/10/10 职场文书
2016年幼儿园万圣节活动总结
2016/04/05 职场文书
python使用glob检索文件的操作
2021/05/20 Python
SQL实现LeetCode(175.联合两表)
2021/08/04 MySQL