您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“js數組與字符串常用方法有哪些”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“js數組與字符串常用方法有哪些”這篇文章吧。
最近在梳理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) //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需要返回的字符個數)
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) 倒敘查找
返回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 數組轉化為字符串
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(結束 不包含)
返回新數組,原數組不變
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 返回截好的數組 原數組變化
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).二個參數 截取 (開始位置,個數) 返回截好的數組 原數組變化
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).添加 原數組增加
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){} 遍歷,循環 類似jquery的each
其中的item參數是數組中的內容,index為其索引,array表示數組本身
var arr=[1,2,3,4,5]; arr.forEach(function(item,index,array){ })
遇到嵌套跳出循環出現問題,暫時沒有解決;
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]
默認情況下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('.'); console.log(arr[arr.length-1]);
2.字母翻轉,首字母大寫
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中字符出現次數的統計
var str='aaaandkdffsfsdfsfssq12345', 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('出現最多的字母'+sName+'次數為'+n);
4. 簡單的url參數解析
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; }
以上是“js數組與字符串常用方法有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。