js 常用的操作字符串和數(shù)組的幾種方法

目錄

  • 字符串:
    1雏亚、split:把字符串分割為字符串?dāng)?shù)組盛卡;
    2系任、indexOf(lastIndexOf):從前往后檢索字符串(從后往前檢索字符串)新症;
    3步氏、charAt:返回在指定位置的字符;
    4徒爹、substring:提取字符串中兩個(gè)指定的索引號(hào)之間的字符荚醒;

  • 數(shù)組和字符串都有的方法:
    5、slice:提取字符串的片斷隆嗅,并在新的字符串中返回被提取的部分界阁;從某個(gè)已有的數(shù)組返回選定的元素。

  • 數(shù)組:
    6胖喳、concat:連接兩個(gè)或更多的數(shù)組泡躯,并返回結(jié)果。
    7丽焊、join:把數(shù)組的所有元素放入一個(gè)字符串较剃。元素通過指定的分隔符進(jìn)行分隔;
    8技健、reverse:顛倒數(shù)組中元素的順序
    9重付、splice:向/從數(shù)組中添加/刪除項(xiàng)目,然后返回被刪除的項(xiàng)目凫乖。該方法會(huì)改變原始數(shù)組确垫。

示例

1弓颈、split:stringObject.split(separator,howmany)
參數(shù) 描述
separator 字符串或正則表達(dá)式,從該參數(shù)指定的地方分割stringObject
howmany 可選删掀,該參數(shù)可指定返回的數(shù)組的最大長度翔冀。如果設(shè)置了該參數(shù),返回的子串不會(huì)多于這個(gè)參數(shù)指定的數(shù)組披泪。如果沒有設(shè)置該參數(shù)纤子,整個(gè)字符串都會(huì)被分割,不考慮它的長度款票。

返回:一個(gè)字符串?dāng)?shù)組控硼。該數(shù)組是通過在 separator 指定的邊界處將字符串 stringObject 分割成子串創(chuàng)建的。返回的數(shù)組中的字串不包括 separator 自身艾少。

let str="How are you doing today?"
let str1 = str.split(" ");
let str2 = str.split(" ",3);
console.log(str1); // ["How", "are", "you", "doing", "today", "?"]
console.log(str2); // ["How", "are", "you"]
2卡乾、indexOf、lastIndexOf:stringObject.indexOf(searchvalue,fromindex)缚够、stringObject.lastIndexOf(searchvalue,fromindex)
參數(shù) 描述
searchvalue 必需幔妨。規(guī)定需檢索的字符串值。
fromindex 可選的整數(shù)參數(shù)谍椅。規(guī)定在字符串中開始檢索的位置误堡。它的合法取值是 0 到 stringObject.length - 1。如省略該參數(shù)雏吭,則將從字符串的首字符開始檢索锁施。
  • indexOf:從前往后檢索;
  • lastIndexOf:從后往前檢索杖们。如果在 stringObject 中的 fromindex 位置之前存在 searchvalue沾谜,則返回的是出現(xiàn)的最后一個(gè) searchvalue 的位置

返回searchvalue在stringObject中的位置,若沒有胀莹,則返回-1;若有多個(gè)婚温,如果不是用正則表達(dá)式全局匹配描焰,則返回匹配到的第一個(gè)。
注:對大小寫敏感栅螟。

let str="How are you doing today ?"
let index1 = str.indexOf("o");
let index2 = str.indexOf("w",7);
let index3 = str.lastIndexOf("o");
let index4 = str.lastIndexOf("w",7);
console.log(index1); //  1 :返回匹配到的第一個(gè)o的位置
console.log(index2); // -1 :從7開始檢索荆秦,檢索不到返回-1
console.log(index3); //  19
console.log(index4); // 2:在位置7之前就存在w,所以返回的是最后一個(gè)w的位置
3力图、charAt:stringObject.charAt(index)
參數(shù) 描述
index 必需步绸。表示字符串中某個(gè)位置的數(shù)字,即字符在字符串中的下標(biāo)吃媒。

注:字符串中第一個(gè)字符的下標(biāo)是 0瓤介。如果參數(shù) index 不在 0 與 string.length 之間吕喘,該方法將返回一個(gè)空字符串。

let str="How are you doing today ?"
let str1 = str.charAt(6);
console.log(str1); //  e
4刑桑、substring:stringObject.substring(start,stop)
參數(shù) 描述
start 必需氯质。一個(gè)非負(fù)的整數(shù),規(guī)定要提取的子串的第一個(gè)字符在 stringObject 中的位置祠斧。
stop 可選闻察。一個(gè)非負(fù)的整數(shù),比要提取的子串的最后一個(gè)字符在 stringObject 中的位置多 1琢锋。如果省略該參數(shù)辕漂,那么返回的子串會(huì)一直到字符串的結(jié)尾。(結(jié)束的位置不包含stop)
  • 返回一個(gè)新的字符串吴超,包括 start 處的字符钉嘹,但不包括 stop 處的字符。
    如果參數(shù) start 與 stop 相等烛芬,那么該方法返回的就是一個(gè)空串(即長度為 0 的字符串)隧期。如果 start 比 stop 大,那么該方法在提取子串之前會(huì)先交換這兩個(gè)參數(shù)赘娄。
let str="How are you doing today ?"
let str1 = str.substring(6);
let str2 = str.substring(2,7);
console.log(str); // How are you doing today ?
console.log(str1); // e you doing today ?
console.log(str2); // w are
5仆潮、slice:stringObject.slice(start,end)arrayObject.slice(start,end)

String.slice() 與 Array.slice() 相似遣臼。

參數(shù) 描述
start 要抽取的片斷的起始下標(biāo)性置。如果是負(fù)數(shù),則該參數(shù)規(guī)定的是從字符串的尾部開始算起的位置揍堰。也就是說鹏浅,-1 指字符串的最后一個(gè)字符,-2 指倒數(shù)第二個(gè)字符屏歹,以此類推隐砸。
end 緊接著要抽取的片段的結(jié)尾的下標(biāo)。若未指定此參數(shù)蝙眶,則要提取的子串包括 start 到原字符串結(jié)尾的字符串季希。如果該參數(shù)是負(fù)數(shù),那么它規(guī)定的是從字符串的尾部開始算起的位置幽纷。
  • 返回一個(gè)新的字符串式塌。包括字符串 stringObject 從 start 開始(包括 start)到 end 結(jié)束(不包括 end)為止的所有字符。
let str="How are you doing today ?"
let str1 = str.slice(6);
let str2 = str.slice(2,7);
let str3 = str.slice(-4);
console.log(str); // How are you doing today ?
console.log(str1); // e you doing today ?
console.log(str2); // w are
console.log(str3); // ay ?
let arr = ["how","are","you","today"];
let arr1 = arr.slice(1);
let arr2 = arr.slice(1,2);
let arr3 = arr.slice(-3,-1);
console.log(arr); // ["how", "are", "you", "today"]
console.log(arr1); // ["are", "you", "today"]
console.log(arr2); // ["are"]
console.log(arr3); // ["are", "you"]
  • 注:
    1.slice() 比較靈活些友浸,參數(shù)可以為負(fù)數(shù)峰尝,如果起始位置為負(fù)數(shù),則從字符串最后一位向前找對應(yīng)位數(shù)并且向后取結(jié)束位置收恢,如果為正整數(shù)則從前往后取起始位置到結(jié)束位置武学。
    2.substring()只能非負(fù)整數(shù)祭往,截取起始結(jié)束位置同slice()函數(shù)一致。
    以上三種函數(shù)未填第二參數(shù)時(shí)劳淆,自動(dòng)截取起始位置到字符串末尾链沼。
6、concat:arrayObject.concat(arrayX,arrayX,......,arrayX)

stringObject.concat() 與 Array.concat() 相似沛鸵,但是對于字符串來說括勺,使用+運(yùn)算符來連接會(huì)比stringObject.concat()簡單快速得多

參數(shù) 描述
arrayX 必需。該參數(shù)可以是具體的值曲掰,也可以是數(shù)組對象疾捍。可以是任意多個(gè)栏妖。
  • 返回一個(gè)新的數(shù)組乱豆。該數(shù)組是通過把所有 arrayX 參數(shù)添加到 arrayObject 中生成的。如果要進(jìn)行 concat() 操作的參數(shù)是數(shù)組吊趾,那么添加的是數(shù)組中的元素宛裕,而不是數(shù)組。
let arr = ["how","are","you","today"];
let arr1 = arr.concat(1,2);
let arr2 = [4,5,6];
let arr3 = arr1.concat(arr2)
console.log(arr); // ["how", "are", "you", "today"]
console.log(arr1); // ["how", "are", "you", "today", 1, 2]
console.log(arr3); // ["how", "are", "you", "today", 1, 2, 4, 5, 6]
7论泛、join:arrayObject.join(separator)
參數(shù) 描述
separator 可選揩尸。指定要使用的分隔符。如果省略該參數(shù)屁奏,則使用逗號(hào)作為分隔符岩榆。
  • 返回一個(gè)字符串。該字符串是通過把 arrayObject 的每個(gè)元素轉(zhuǎn)換為字符串坟瓢,然后把這些字符串連接起來勇边,在兩個(gè)元素之間插入 separator 字符串而生成的。
let arr = ["how","are","you","today"];
let str1 = arr.join();
let str2 = arr.join('');
let str3 = arr.join('-');
console.log(str1); // how,are,you,today
console.log(str2); // howareyoutoday
console.log(str3); // how-are-you-today  
8折联、join:arrayObject.reverse()

注:該方法會(huì)改變原來的數(shù)組粒褒,而不會(huì)創(chuàng)建新的數(shù)組。

let arr = ["how","are","you","today"];
arr.reverse();
console.log(arr); // ["today", "you", "are", "how"]
9诚镰、join:arrayObject.splice(index,howmany,item1,.....,itemX)

splice() 方法與 slice() 方法的作用是不同的奕坟,splice() 方法會(huì)直接對數(shù)組進(jìn)行修改。

參數(shù) 描述
index 必需怕享。整數(shù),規(guī)定添加/刪除項(xiàng)目的位置镰踏,使用負(fù)數(shù)可從數(shù)組結(jié)尾處規(guī)定位置函筋。
howmany 必需。要?jiǎng)h除的項(xiàng)目數(shù)量奠伪。如果設(shè)置為 0跌帐,則不會(huì)刪除項(xiàng)目首懈。
item1,.....,itemX 可選。向數(shù)組添加的新項(xiàng)目谨敛。
9.1究履、向數(shù)組中添加元素
let arr = ["how","are","you","today"];
let arr1 = arr.splice(2,0,'a');
console.log(arr); // ["how", "are", "a", "you", "today"]
console.log(arr1) // []
9.2、替換數(shù)組中某個(gè)位置的元素
let arr = ["how","are","you","today"];
let arr1 = arr.splice(2,1,'a');
console.log(arr); // ["how", "are", "a", "today"]
console.log(arr1) // ["you"]
9.3脸狸、刪除數(shù)組中的元素
// 指定刪除個(gè)數(shù)
let arr = ["how","are","you","today"];
let arr1 = arr.splice(2,1);
console.log(arr); // ["how", "are", "today"]
console.log(arr1) // ["you"]

// 不指定刪除個(gè)數(shù)最仑,則從index開始刪到結(jié)尾
let arr = ["how","are","you","today"];
let arr1 = arr.splice(2);
console.log(arr); // ["how", "are"]
console.log(arr1) // ["you", "today"]

// 刪除指定個(gè)數(shù),并且添加元素(等同于:用添加的元素來代替所需要?jiǎng)h除的元素)
let arr = ["how","are","you","today"];
let arr1 = arr.splice(1,3,'a','b');
console.log(arr); // ["how", "a", "b"]
console.log(arr1) // ["are","you", "today"]

參考文章:
1炊甲、JavaScript String 對象
2泥彤、JavaScript Array 對象

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市卿啡,隨后出現(xiàn)的幾起案子吟吝,更是在濱河造成了極大的恐慌,老刑警劉巖颈娜,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件剑逃,死亡現(xiàn)場離奇詭異,居然都是意外死亡官辽,警方通過查閱死者的電腦和手機(jī)蛹磺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來野崇,“玉大人称开,你說我怎么就攤上這事∨依妫” “怎么了鳖轰?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長扶镀。 經(jīng)常有香客問我蕴侣,道長,這世上最難降的妖魔是什么臭觉? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任昆雀,我火速辦了婚禮,結(jié)果婚禮上蝠筑,老公的妹妹穿的比我還像新娘狞膘。我一直安慰自己,他們只是感情好什乙,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布挽封。 她就那樣靜靜地躺著,像睡著了一般臣镣。 火紅的嫁衣襯著肌膚如雪辅愿。 梳的紋絲不亂的頭發(fā)上智亮,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天,我揣著相機(jī)與錄音点待,去河邊找鬼阔蛉。 笑死,一個(gè)胖子當(dāng)著我的面吹牛癞埠,可吹牛的內(nèi)容都是我干的状原。 我是一名探鬼主播,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼燕差,長吁一口氣:“原來是場噩夢啊……” “哼遭笋!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起徒探,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤瓦呼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后测暗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體央串,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年碗啄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了质和。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,615評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡稚字,死狀恐怖饲宿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情胆描,我是刑警寧澤瘫想,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站昌讲,受9級特大地震影響国夜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜短绸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一车吹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧醋闭,春花似錦窄驹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春饮戳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背洞拨。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工扯罐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人烦衣。 一個(gè)月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓歹河,卻偏偏與公主長得像,于是被迫代替她去往敵國和親花吟。 傳聞我的和親對象是個(gè)殘疾皇子秸歧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評論 2 359

推薦閱讀更多精彩內(nèi)容