js數(shù)組與字符串常用方法總結(jié)
最近在梳理js的基礎(chǔ),首先從數(shù)組和字符串開始。
string 常用方法:
1.substring(start開始位置的索引,end結(jié)束位置索引) 截取的位置不包含結(jié)束位置的字符,只寫一個(gè)參數(shù)表示從開始位置截取到最后
var str='abcdefg'; str.substring(1) //得到bcdefg str.substring(1,3) //得到bc
輸入負(fù)值時(shí)將負(fù)值變?yōu)?,哪個(gè)較小作為開始位置
str.substing(-1,1) =>str.substring(0,1) //a
str.substring(1,-2) =>str.substring(0,1) //a
2.slice(start開始位置索引,end結(jié)束位置索引) 基本和substring相似,區(qū)別在參數(shù)為負(fù)數(shù)。
var str='abcdefg'; str.slice(1) //bcdefg str.substring(1,3) // bc
輸入負(fù)值時(shí) 值與字符串的長(zhǎng)度相加
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
值絕對(duì)值大于字符串的長(zhǎng)度時(shí)變?yōu)?0
str.slice(-22) =>str.substring(0) //abcdefg
第二個(gè)參數(shù)絕對(duì)值大于字符串的長(zhǎng)度時(shí),返回''
3.substr(start開始位置索引,end需要返回的字符個(gè)數(shù))
var str='abcdefg'; str.substr(1) //bcdefg str.substr(1,1) //b
輸入負(fù)值時(shí) start參數(shù)與字符串的長(zhǎng)度相加 ,end為負(fù)時(shí)參數(shù)變?yōu)?
str.substr(-1) =>str.substr(6)//g str.substr(-2,-3) // ''
4.charAt(index) 方法返回指定索引位置處的字符。如果超出有效范圍(0與字符串長(zhǎng)度減一)的索引值返回空字符串.
var str='abcdefg'; str.charAt(2) // c
5.index(string) 返回String對(duì)象內(nèi)第一次出現(xiàn)子字符串位置。如果沒有找到子字符串,則返回-1。
var str='abcdefga' str.indexOf('a') // 0 str.indexOf('h') //-1
6.lastIndexOf(string) 倒敘查找
返回String對(duì)象內(nèi)第一次出現(xiàn)子字符串位置。如果沒有找到子字符串,則返回-1。
var str='abcdefga' str.lastIndexOf('a') // 7
7.split(str) 將字符串以參數(shù)分割為數(shù)組
var str='abcadeafg' str.split('a') //["", "bc", "de", "fg"]
8. toLowerCase方法返回一個(gè)字符串,該字符串中的字母被轉(zhuǎn)換成小寫。
9. toUpperCase方法返回一個(gè)字符串,該字符串中的所有字母都被轉(zhuǎn)換為大寫字母。
10.match() – 方法可在字符串內(nèi)檢索指定的值,或找到一個(gè)或多個(gè)正則表達(dá)式的匹配
11.search 方法返回與正則表達(dá)式查找內(nèi)容匹配的第一個(gè)字符串的位置。
12.replace 用來查找匹配一個(gè)正則表達(dá)式的字符串,然后使用新字符串代替匹配
http://www.cnblogs.com/bijiapo/p/5451924.html
數(shù)組常用的方法
1. push 添加到最后 返回添加后的數(shù)組
2. unshift 添加到最前面 返回添加后的數(shù)組
3. shift 刪除(從前面) 返回處理后的數(shù)組
4. pop 刪除最后一項(xiàng) 返回處理后的數(shù)組
5. reverse 數(shù)組翻轉(zhuǎn) 返回處理后的數(shù)組
6. join 數(shù)組轉(zhuǎn)化為字符串
var arr=[1,2,3,4,5], str=arr.join('--');
console.log(str); // 1--2--3--4--5 以join內(nèi)的參數(shù)切割數(shù)組
console.log(arr); // [1,2,3,4,5] 原數(shù)組未變
7. slice(start,end) 截取數(shù)組 從start(開始) 到end(結(jié)束 不包含)
返回新數(shù)組,原數(shù)組不變
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 數(shù)組合并
9. splice(開始下標(biāo),個(gè)數(shù),ele1,ele2....) 剪接數(shù)組
(1).一個(gè)參數(shù) 從參數(shù)位置截取 填寫負(fù)數(shù)類似上面str slice 返回截好的數(shù)組 原數(shù)組變化
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).二個(gè)參數(shù) 截取 (開始位置,個(gè)數(shù)) 返回截好的數(shù)組 原數(shù)組變化
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).添加 原數(shù)組增加
var arr=[1,2,3,4,5];
console.log(arr.splice(1,0,13)); // []
console.log(arr); // [1,13,2,3,4,5]
(4).替換
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){} 遍歷,循環(huán) 類似jquery的each
其中的item參數(shù)是數(shù)組中的內(nèi)容,index為其索引,array表示數(shù)組本身
var arr=[1,2,3,4,5];
arr.forEach(function(item,index,array){
})
遇到嵌套跳出循環(huán)出現(xiàn)問題,暫時(shí)沒有解決;
11. map方法 映射 用法和forEach類似
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 排序
var arr=[1,2,22,11,33,3,5,4];
console.log(arr.sort()) // [1,11,2,22,3,33,4,5]
默認(rèn)情況下sort方法是按ascii字母順序排序的,而非我們認(rèn)為是按數(shù)字大小排序
arr.sort(function(a,b){ return a-b})
a-b從小到大 b-a從大到小
13. 順便寫寫我知道的排序方法
(1)冒泡排序 每次比較相鄰的兩個(gè)數(shù),如果后一個(gè)數(shù)比前一個(gè)數(shù)小,換位置
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)快速排序 二分法,找到中間的數(shù),取出來(新數(shù)組),原數(shù)組沒,每次和此數(shù)比較,小的放到左邊,大的放到右面
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. 數(shù)組的去重也寫下吧
(1)雙層循環(huán)不是很好
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值無重復(fù)
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));//類型發(fā)生變化了
}
(3) 利用sort方法排序,去掉旁邊相同項(xiàng)
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);
}
}
一些常見數(shù)學(xué)方法
math.abs() 取絕對(duì)值 math.ceil() 向上取整 math.floor() 向下取整
math.round() 四舍五入 math.roundom
function getRan(n,m){
return Math.floor(Math.random()*(m-n)+n);
}
數(shù)組和字符串的一些綜合應(yīng)用
1. 截取后綴名
(1) var str='1.xxx.avi';
str=str.substring(str.lastIndexOf('.')+1);
(2) var str='1.xxx.avi';
var arr=str.split('.');
console.log(arr[arr.length-1]);
2.字母翻轉(zhuǎn),首字母大寫
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中字符出現(xiàn)次數(shù)的統(tǒng)計(jì)
var str='aaaandkdffsfsdfsfssq12345',
json={},
n= 0,
sName;
for(var i= 0,len=str.length;i<len;i++){
var Letter=str.charAt(i);
//統(tǒng)計(jì)次數(shù)
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('出現(xiàn)最多的字母'+sName+'次數(shù)為'+n);
4. 簡(jiǎn)單的url參數(shù)解析
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;
}
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!
相關(guān)文章
javascript設(shè)計(jì)模式 – 工廠模式原理與應(yīng)用實(shí)例分析
這篇文章主要介紹了javascript設(shè)計(jì)模式 – 工廠模式,結(jié)合實(shí)例形式分析了javascript工廠模式基本概念、原理、定義、應(yīng)用場(chǎng)景及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2020-04-04
JavaScript實(shí)現(xiàn)點(diǎn)擊按鈕復(fù)制指定區(qū)域文本(推薦)
這篇文章主要介紹了JavaScript實(shí)現(xiàn)點(diǎn)擊按鈕復(fù)制指定區(qū)域文本(推薦)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-11-11
詳解如何準(zhǔn)確判斷JavaScript中的數(shù)據(jù)類型
JavaScript中,我們經(jīng)常需要判斷數(shù)據(jù)類型以便于正確地處理數(shù)據(jù),本文將介紹JavaScript中的數(shù)據(jù)類型判斷技術(shù),包括typeof操作符、instanceof操作符、Object.prototype.toString方法以及ES6新增的一些數(shù)據(jù)類型判斷方法,需要的朋友可以參考下2023-08-08
JS項(xiàng)目中對(duì)本地存儲(chǔ)進(jìn)行二次的封裝的實(shí)現(xiàn)
這篇文章主要介紹了JS項(xiàng)目中對(duì)本地存儲(chǔ)進(jìn)行二次的封裝,這里我們將要使用到的key存儲(chǔ)下來,新建一個(gè)叫constant-storage.js的文件,對(duì)外暴露一些key的鍵名,也方便后期統(tǒng)一修改,這里因?yàn)槎际呛懔?,所以名稱我們都用大寫表示,需要的朋友可以參考下2022-07-07
js實(shí)現(xiàn)帶翻轉(zhuǎn)動(dòng)畫圖片時(shí)鐘
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)帶翻轉(zhuǎn)動(dòng)畫的圖片時(shí)鐘,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
js獲取select默認(rèn)選中的Option并不是當(dāng)前選中值
這篇文章主要介紹了js如何獲取select默認(rèn)選中的Option并不是當(dāng)前選中的值,需要的朋友可以參考下2014-05-05
javascript模擬的Ping效果代碼 (Web Ping)

