? ? ? ? 前端三件套中 JavaScript 就是充電處理業(yè)務(wù)邏輯的一個(gè)角色,在很多情況之下,或像在做項(xiàng)目之中去發(fā)起一些數(shù)據(jù)請(qǐng)求之后待服務(wù)器響應(yīng)回饋給到客戶端的時(shí)候,對(duì)于返回的數(shù)據(jù)需要進(jìn)行一個(gè)格式的處理,比如有JSON,字符串,XML等等這些數(shù)據(jù)格式,有時(shí)需要格式轉(zhuǎn)化,有時(shí)需要簡(jiǎn)單的截取其中的某個(gè)字符等等,那么本篇講關(guān)于Javascript中一些處理的方法。
· 字符串
substring
?????????substring() 方法是比較常見和常用的方法,可以從字符串中提取一些字符,下面來用一下:
substring(0, i)
? ? ? ? 從下標(biāo)為 0 開始截取到下標(biāo)為 i 中間的內(nèi)容。
var str = 'I am a teacher!'
str.substring(0,3) // I a
str.substring(0,4) // I am
str.substring(0,5) // I am
substring(i)
? ? ? ? 從下標(biāo)為 i 開始往后截取,即下標(biāo)為 i 之前的內(nèi)容均去除。
var str = 'I am a teacher!'
str.substring(5) // a teacher!
?substring(str.length?- i)?
? ? ? ? 從右邊的第 i 個(gè)字符開始截取,str.length 是長度,長度是從1開始計(jì)數(shù),所以從右邊的第 i 個(gè),不是右邊開始倒數(shù)下標(biāo);(這里有人理解為長度- i = Number,那么對(duì)應(yīng)不就是從下標(biāo)第幾個(gè)開始嗎?如果這么想的話直接用substring(i)這個(gè)方便嗎?所以這個(gè)是方便比較長度字符串且內(nèi)容是靠后,從右邊截取會(huì)更快),substring(str.length - i,str.length) 皆可。
var str = 'I am a teacher!'
str.substring(str.length - 6) // acher!
?
substring(0,str.length - i)
? ? ? ? 從右邊的第 i 個(gè)字符開始截取掉獲取前面的內(nèi)容。
? ? ? ? substring(str.length - i)截取的是從右邊第 i 個(gè)字符開始的內(nèi)容,前面的內(nèi)容則通通不要,反而substring(0,str.lenght - i)反過來,截取除去從右邊第 i 個(gè)字符開始的內(nèi)容,即第 i 個(gè)之前的內(nèi)容。
var str = 'I am a teacher!'
str.substring(0, str.length - 6) // a teacher!
substring(0,indexOf(midChar))
? ? ? ? 從開始截取到某個(gè)字符出現(xiàn),indexOf() 返回第一次出現(xiàn)的元素。
var str = 'I am a teacher!'
str.substring(0, str.indexOf('c')) // I am a tea
?subString(0, str.indexOf(midStr)+midStr.length)
? ? ? ? 從開始截取到某個(gè)字段出現(xiàn),截取該字段的第一次出現(xiàn),midStr 指指定的某個(gè)字段。
var str = 'I am a teacher!'
var sub = 'ch'
str.substring(0, (str.indexOf(sub))+sub.length) // I am a teach
replace
? ? ? ? 替換,將字符串中的某個(gè)字符或字段進(jìn)行替換,replace 也是非常常見的。
var str = 'I am a teacher!'
str.replace("teacher","student") // I am a student!
substr
? ? ? ? 講到這個(gè)substring,當(dāng)然就有這個(gè)substr,相信大家也使用碰到過,可以來看一下substr的用法,區(qū)別substring 和 substr.
substr(start,length)?
? ? ? ? start 下標(biāo) ,length 截取長度;
? ? ? ? 根據(jù)上述substring的用法知道substring用法是substring(from,to),從from要截取開始的下標(biāo)to去到截取末尾的位置,或者只有開始下標(biāo)substring(to);substr的第二個(gè)參數(shù)是截取的長度,下面來看一下使用對(duì)比:
? ? ? ? ?好像沒什么區(qū)別啊,substring(from,to)中的第一個(gè)參數(shù)下標(biāo)基本都是0,那么可以負(fù)數(shù)嗎?而substr是否可以是負(fù)數(shù),下面來看一下:
var str = 'I am a teacher!'
str.substring(0,8) // I am a t
str.substring(-1,8) // I am a t
str.substring(-2,8) // I am a t
str.substring(-3,8) // I am a t
? ? ? ? 來看一下 substr 的第一個(gè)參數(shù)是負(fù)數(shù):?
var str = 'I am a teacher!'
str.substr(0,8) // I am a t
str.substr(-1,8) // I am a t
str.substr(-2,8) // I am a t
str.substr(-3,8) // I am a t
? ? ? ? 差別到這里就看出來,-1 是倒數(shù)的第一個(gè)字符,-2 則是倒數(shù)的第二個(gè)字符,以此類推。而 (-1,8)就是倒數(shù)第一個(gè)字符開始截取8個(gè)長度。下面來多測(cè)試幾個(gè):
substr(start)? ? ? ? ?
????????當(dāng)然了substr是可以不帶第二參數(shù)的,substr的第二個(gè)參數(shù)表示的是截取長度。
var str = 'I am a teacher!'
str.substr(0) // I am a teacher!
str.substr(1) // am a teacher!
str.substr(2) // am a teacher!
str.substr(-7) // eacher!
· 數(shù)組
????????下面來看一下處理數(shù)組的一些方法,下面來一個(gè)簡(jiǎn)單的數(shù)組,一般在處理數(shù)據(jù)中的一些數(shù)據(jù)也是有數(shù)組,二維數(shù)組,有值,有對(duì)象以及混合型等多元形式,分別演示下:
? ? ? ? ?當(dāng)然還有其他的形式出現(xiàn),這里不再過多的拓展開來,我們來講幾個(gè)方法來處理數(shù)組中一些數(shù)據(jù)處理。
splice
? ? ? ? ?使用 splice() 方法來處理數(shù)據(jù),實(shí)現(xiàn)增刪改。
? ? ? ? splice 語法格式: array.splice ( start, count , items )
????????start 是刪除數(shù)組元素的開始下標(biāo)(必須),count 刪除元素的個(gè)數(shù),items 則是插入數(shù)組的元素
刪除 splice(i)
? ? ? ? 一個(gè)參數(shù),數(shù)組會(huì)刪除從給定索引到結(jié)束的所有元素,原數(shù)組會(huì)被修改。
var arr = [1, 2, 3, 4, 5, 6]
var del = arr.splice(2)
console.log(arr) // [ 1, 2 ]
console.log(del) // [ 3, 4 , 5 ,6 ]
刪除 splice(i,l)
? ? ? ? 在 arr 數(shù)組中刪除了從下標(biāo)2開始的索引到結(jié)束所有元素,那么如果只刪除數(shù)組中的3,讓數(shù)組arr為 [ 1,2,4,5,6?],可以如下操作:
var arr = [1, 2, 3, 4, 5, 6]
var del = arr.splice(2,1)
console.log(arr) // [ 1, 2, 4 , 5 ,6 ]
console.log(del) // [ 3 ]
刪除3,4,讓數(shù)組為 [ 1, 2, 4, 5?] ,如下:
var arr = [1, 2, 3, 4, 5, 6]
var del = arr.splice(2,2)
console.log(arr) // [ 1, 2, 5 ,6 ]
console.log(del) // [ 3, 4 ]
? ? ? ? 如果這個(gè)數(shù)組足夠長,那么我想刪除倒數(shù)的數(shù)組,還是需要從開始的索引往下數(shù)嗎?splice()方法的第一個(gè)參數(shù)可以是正數(shù)或者負(fù)數(shù)。
正數(shù)則表示 從左邊往右定位索引,而負(fù)數(shù)則不是,表示從右邊到左邊指定元素
?添加 splice(i,l,s)
? ? ? ? ?使用splice在數(shù)組中添加元素,第三個(gè)參數(shù)則是添加的元素;
? ? ? ? 這是當(dāng)前arr數(shù)組的元素,需要來補(bǔ)全中間的兩個(gè)數(shù)字3,4.
? ? ? ? ?加入4也是同理,那么這是一個(gè)一個(gè)的加,第三個(gè)參數(shù)其實(shí)是可以插入多個(gè)元素的。可以這樣來修改:
var arr = [ 1, 2, 5, 6 ]
arr.splice(2,0,3,4) // [ 1, 2, 3, 4, 5, 6 ]
替換 splice(i,l,s)
? ? ? ? 在數(shù)組中添加元素 splice 中的第二個(gè)參數(shù)則為0,不刪除只往數(shù)組添加元素,替換則第二個(gè)參數(shù)則是要替換的索引下標(biāo),第三個(gè)參數(shù)則是要替換的元素。
var arr = [ 1, 2, 2 ]
arr.splice(2,1,3)
slice
? ? ? ? slice() 截取數(shù)組,splice() 與 slice() 這兩個(gè)方法很是相近,但是它僅能夠截取數(shù)組中指定區(qū)段的元素,并返回這個(gè)子數(shù)組,slice() 有兩個(gè)參數(shù).
slice(s)?
? ? ? ? 第一個(gè)參數(shù)的正負(fù)與splice的第一個(gè)參數(shù)一樣;
var arr = [ 1,2,3,4,5,6 ]
arr.slice(2) // 3,4,5,6
splice(s,e)
? ? ? ? ?第一個(gè)參數(shù)為起始位置,而第二個(gè)參數(shù)則為截取的末位置,同理兩個(gè)參數(shù)可正負(fù);
var arr = [ 1,2,3,4,5,6 ]
arr.slice(2,5) // 3,4,5
var arr = [ 1,2,3,4,5,6 ]
arr.slice(-4,-1) // 3,4,5
????????slice()?方法將返回?cái)?shù)組的一部分(子數(shù)組),但不會(huì)修改原數(shù)組。而?splice()?方法是在原數(shù)組基礎(chǔ)上進(jìn)行截取。如果希望在原數(shù)組基礎(chǔ)上進(jìn)行截取操作,而不是截取為新的數(shù)組,只能使用?splice()?方法。如下:
? ? ? ? ?以上就是本篇的全部內(nèi)容了,感謝大家的支持!文章來源:http://www.zghlxwxcb.cn/news/detail-526753.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-526753.html
到了這里,關(guān)于JavaScript 處理字符串?dāng)?shù)組數(shù)據(jù)方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!