zoukankan      html  css  js  c++  java
  • js 常用数组和字符串方法

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

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

    string 常用方法:

    1.substring(start开始位置的索引,end结束位置索引) 截取的位置不包含结束位置的字符,只写一个参数表示从开始位置截取到最后

    1

    2

       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相似,区别在参数为负数。

    1

    2

    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需要返回的字符个数)

    1

    2

    var str='abcdefg'; 

    str.substr(1) //bcdefg      str.substr(1,1) //b

    输入负值时 start参数与字符串的长度相加 ,end为负时参数变为0

    1

    2

     str.substr(-1) =>str.substr(6)//g         

     str.substr(-2,-3) // ''

    4.charAt(index) 方法返回指定索引位置处的字符。如果超出有效范围(0与字符串长度减一)的索引值返回空字符串.

    1

    2

     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      数组转化为字符串  

    1

    2

    3

       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(结束 不包含)

                                返回新数组,原数组不变

    1

    2

    3

        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  返回截好的数组 原数组变化

    1

    2

    3

    4

         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).二个参数  截取 (开始位置,个数) 返回截好的数组 原数组变化

    1

    2

    3

    4

    5

         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).添加  原数组增加

    1

    2

    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).替换 

    1

    2

    3

    4

    5

         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){}   遍历,循环 类似jqueryeach

          其中的item参数是数组中的内容,index为其索引,array表示数组本身

    1

    2

    3

    var arr=[1,2,3,4,5];

          arr.forEach(function(item,index,array){

          })

          遇到嵌套跳出循环出现问题,暂时没有解决;

      11. map方法        映射 用法和forEach类似

    1

    2

    3

    4

    5

    6

    7

    8

       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  排序

    1

    2

      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)冒泡排序  每次比较相邻的两个数,如果后一个数比前一个数小,换位置

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

      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)快速排序 二分法,找到中间的数,取出来(新数组),原数组没,每次和此数比较,小的放到左边,大的放到右面     

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

     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)双层循环不是很好                

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

        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)利用jsonkey值无重复              

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

      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方法排序,去掉旁边相同项      

    1

    2

    3

    4

    5

    6

    7

    8

       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);

              }

            }

          一些常见数学方法

    1

    2

    3

    4

    5

            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';

    1

    2

            var arr=str.split('.');

            console.log(arr[arr.length-1]);

          2.字母翻转,首字母大写          

    1

    2

    3

    4

    5

    6

    7

    8

         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中字符出现次数的统计          

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

         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参数解析              

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

      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;

             }

    吾生有涯 而知也无涯矣
  • 相关阅读:
    HDFS文件读写操作(基础基础超基础)
    LeetCode & Q35-Search Insert Position-Easy
    LeetCode & Q27-Remove Element-Easy
    LeetCode & Q26-Remove Duplicates from Sorted Array-Easy
    LeetCode & Q1-Two Sum-Easy
    Full-Stack-Fundation-Udacity------Lesson 1 Working with CRUD
    利用封装、继承对Java代码进行优化
    排序算法——冒泡排序
    排序算法——希尔排序
    排序算法——直接插入排序
  • 原文地址:https://www.cnblogs.com/Sherlock09/p/6973822.html
Copyright © 2011-2022 走看看