首頁 > web前端 > js教程 > 主體

js數組與字串常用方法總結

高洛峰
發布: 2017-01-14 11:37:14
原創
1093 人瀏覽過

最近在梳理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),str        =>str.slice(6) = 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)  倒敘問

6.lastIndexOf(string)  倒敘問

6.lastIndexOf(string)  倒敘出現子字串位置。如果沒有找到子字串,則傳回-1。

var str='abcdefga'     str.lastIndexOf('a') // 7

7.split(str)  將字串以參數分割為陣列

var str='abcadeafg' ) //["", "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   新增至最前面      移除新增後的陣列🠎

4. pop       刪除最後一項返回處理後的陣列

5. reverse   陣列翻轉          返回處理後的陣列

6. join      陣列取數組從start(開始) 到end(結束不含)

                           ,ele2....) 剪接陣列

  (1) .一個參數  從參數位置截取填入負數類似上面str slice  回傳截好的陣列原數組變化

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]  原数组未变
登入後複製

  (2).二個參數  截取(開始位置,個數) 傳回截好的陣列陣列變化

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]
登入後複製

   (3).添加  原始數組增加

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]
登入後複製

  (4).替換 

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()
登入後複製

🠎 ).10.

其中的item參數是數組中的內容,index為其索引,array表示數組本身

var arr=[1,2,3,4,5];
console.log(arr.splice(1,0,13)); // []
console.log(arr);        // [1,13,2,3,4,5]
登入後複製

      遇到嵌套方法循環出現問題,暫時沒有解決;

  11. map 

  12. arr.sort  排序

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)
登入後複製

   

      預設情況下sort方法是按ascii

      預設情況下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(&#39;.&#39;);
console.log(arr[arr.length-1]);
登入後複製

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

var str=&#39;wo shi yi ge demo&#39;,
   arr=str.split(&#39; &#39;);
   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(&#39; &#39;);
登入後複製

3. str中字符出现次数的统计

var str=&#39;aaaandkdffsfsdfsfssq12345&#39;,
   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(&#39;出现最多的字母&#39;+sName+&#39;次数为&#39;+n);
登入後複製

4. 简单的url参数解析

function getData() {
        var search = window.location.search.substring(1);
        if (!search) {
          return;
        }
        var arr = search.split(&#39;&&#39;),
            arr2 = [],
            json = {},
            key,
            alue;
        for (var i = 0; i < arr.length; i++) {
          arr2 = arr[i].split(&#39;=&#39;);
          key = arr2[0];
          value = arr2[1];
          json[key] = value;
        }
        return json;
       }
登入後複製

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持PHP中文网!

更多js数组与字符串常用方法总结相关文章请关注PHP中文网!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!