JavaScript常用字符串和數組操作歸納

版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/DarinZanya/article/details/53079153

一、JS字符串操作

1. 字符串截取:slice, substring, substr方法

比較:slice( start,end )substring( start,stop )substr( start,length )

相同:一個參數時,三個方法都表示從參數值所示開始位置一直截取到字符串末尾(start從0開始計數,stop/end比截取的最後一個字符多1)

不同:

⑴ 兩個參數時,slice和substring第二個參數代表結束位置,而substr第二個參數代表截取的長度;

⑵ slice相比substring要靈活些,參數可以爲負。若參數值爲負數,則規定的是從字符串的尾部開始算起的位置;

⑶ substring兩個參數中取較小值作爲開始位置,相減即爲字符串長度,而slice若第一個參數等於大於第二個參數,返回空字符串.;

2. 其他操作

indexOf():返回字符串第一處出現的索引。如果沒有匹配項,返回 -1 。 

lastIndexOf():返回字符串最後一處出現的索引。如果沒有匹配項,返回 -1 。

charAt( index ):返回指定位置的字符串,index爲字符串索引值,從0開始到string.leng – 1,若不在這個範圍將返回一個空字符串。

search() :用於檢索字符串中指定的子字符串。如果查找成功,返回字符串中匹配的索引值。否則返回 -1 。

match():可在字符串內檢索指定的值,或找到一個或多個正則表達式的匹配。 

replace( substr/regexp/,replacement ):用來進行字符串替換操作,前者爲被替換的子字符串(可以是正則),後者爲用來替換的文本

split( separator,howmany ) :把一個字符串分割成字符串數組,前者爲分割符,後者爲返回數組的最大長度。

toLowerCase():將整個字符串轉成小寫字母。 

toUpperCase():將整個字符串轉成大寫字母

3. 去掉字符串中的html標籤

var list="<span>dsadasdasdas</span>"
list = list.replace(/<.*?>/ig,"");
console.log(list);
4. 去掉字符串中的字符,僅保留漢字
var a = '啊達的adddsad啊發@!@#啊啊啊';
var re = /[^\u4e00-\u9fa5]/g;
var b = a.replace(re,'');
console.log(b);

5. 查找字符串中出現最多的字符並計算出現次數

var str = 'asdfssaaasasasasaa';
var json = {};
for(var i = 0; i < str.length; i++) {
    if(!json[str.charAt(i)]) {
        json[str.charAt(i)] = 1;
    } else {
        json[str.charAt(i)]++;
    }
};
console.log(json);
var iMax = 0;
var iIndex = '';
for(var i in json) {
    if(json[i] > iMax) {
        iMax = json[i];
        iIndex = i;
    }
}
console.log('出現次數最多的是:' + iIndex + '出現' + iMax + '次');

二、數組操作

1. 數組元素添加與刪除

push():   尾部添加元素----返回數組新的長度

unshift():頭部添加元素----返回數組新的長度

pop():     刪除尾部元素----返回被刪除的值

shift():     刪除頭部元素----返回被刪除的值

方法拓展:

數組元素依次換位後移: arr.unshift( arr.pop() );

數組元素依次換位前移: arr.push( arr.shift() );

2. 數組元素的刪除、替換、添加(插入)- splice()

  arr.splice(0,2); 刪除

  arr.splice(0,2,'XX') 替換

  arr.splice(1,0,'','')添加

3. 數組清空 

arr.length = 0;

arr = [];

注:

a = [1,2,3,4,5];  

a.length = 3;// a = [1,2,3]

a.length = 0;// a = []

4. 數組排序

var arr = [4,5,8,89,3,2,0];
arr.sort(function(a,b){
	return a - b;	//從小到大,若從大到小則return b-a 
})
console.log(arr);

例:

var arrWidth = ['345px','23px','10px','1000px'];
arrWidth.sort(function (a,b){
	return parseInt(a) - parseInt(b);
});

特別的,隨機排序可採用以下方法:

var arr = [1,2,3,4,5,6,7,8];
arr.sort(function(a,b){
	return Math.random()-0.5;	//值有正有負
})

另附一些常見隨機數

0~1: Math.round(Math.random());// round() 方法可把一個數字舍入爲最接近的整數。

0~10: Math.round(Math.random()*10);

5~10: Math.round(Math.random()*5+5);

20~100: Math.round(Math.random()*80+20);

x~y: Math.round(Math.random()*(y-x)+x);

0~x: Math.round(Math.random()*x);

1~x: Math.ceil(Math.random()*x);// ceil()方法對一個數進行上舍入。

5. 數組的連接與顛倒順序 - concat、reverse

var arr1=[1,2,3];
var arr2=[4,5,6];
var arr = arr1.concat(arr2);
console.log(arr);		//[1,2,3,4,5,6]
arr1.reverse();
console.log(arr1);		//[3,2,1]
var str = 'abcdef';
var newstr = str.split('').reverse().join('');
console.log(newstr);		//'fedcba'
console.log(str);		//'abcdef'
6. 數組拼接成字符串 - join()

7. 數組去重

var arr = [1,2,2,4,2];
for(var i=0;i<arr.length;i++){
  for(var j=i+1;j<arr.length;j++){
    if(arr[i] == arr[j]){
      arr.splice(j,1);
      j--;
    }	
  }
}

8. 去掉數組中的空值

var array = [1,2,,,4,6,,,,,,55];
console.log(array)
for(var i = 0 ;i<array.length;i++)
{
  if(array[i] == "" || typeof(array[i]) == "undefined"){
    array.splice(i,1);
    i= i-1;
  }      
}
console.log(array)

2016/12/5......

2018/6/28續

9. 數組迭代方法

every():對數組中的每一項運行給定函數。若該函數每一項都返回true, 則返回true;

filter():對數組中的每一項運行給定函數。返回給定函數符合條件(返回true)的項組成的數組;

forEach(): 對數組中的每一項運行給定函數。

array.forEach(function(item, index, arr){})    //參數依次爲:當前元素,當前元素索引值,當前元素所屬的數組對象

map():同上。返回每次函數調用的結果組成的數組。

var numbers = [65, 44, 12, 4];
var mapResult = numbers.map(function(item, index, arr){
  return item * 2;
});
//[2,4,6,8,10,8,6,4,2]

some():同上。如果該函數對其中任一項返回true,則返回true。

9. 數組歸併方法

reduce()、reduceRight() 迭代數組的所有項,然後構建一個最終返回的值。

var values = [1,2,3,4,5];
var sum = values.reduce(function(prev,cur,index,arr){
  return prev+cur;
});
//sum 15
values.reduceRight(function(prev,cur,index,arr){
  return prev+cur;
});














  








2016/12/5,後續補充......
2016/12/5,後續補充......
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章