js常用方法总结

来源:互联网 发布:大学生分期借贷软件 编辑:程序博客网 时间:2024/05/17 02:33

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

      其中的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){
       returnitem.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){
    vartmp;
    for(vari=0,len=arr.length-1;i<len;i++){
      for(varj=0;j<len;j++){
        if(arr[j]>arr[j+1]){
          //换位置
          tmp=arr[j+1];
          arr[j+1]=arr[j];
          arr[j]=tmp;
        }
      }
    }
    returnarr;
  }
  functionbSort(arr){
    vartmp;
    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;
        }
      })
    })
    returnarr
  }

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function fastSoft(arr){
       varlen=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);
         }
       })
    returnfastSoft(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=[];
        functionfind(arr2,ele){
         for(vari= 0,len=arr2.length;i<len;i++){
           if(arr2[i]==ele)return true;
         }
          returnfalse;
        }
        for(vari= 0,len=arr.length;i<len;i++){
          if(!find(arr2,arr[i])){
            arr2.push(arr[i]);
          }
        }

    (2)利用json的key值无重复              

?
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(varname 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(vari=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){
  returnMath.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(vari=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(vari= 0,len=str.length;i<len;i++){
     varLetter=str.charAt(i);
     //统计次数
     if(json[Letter]){
       json[Letter]++;
     }else{
       json[Letter]=1;
     }
   }
   //找最大
   for(varname 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() {
        varsearch = window.location.search.substring(1);
        if(!search) {
          return;
        }
        vararr = 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;
        }
        returnjson;
       }
原创粉丝点击