一、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。
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;
});