天天看點

JavaScript各類型方法整理一(字元串部分)前言

JavaScript各類型方法整理(字元串部分)

  • 前言
    • 一、傳統字元串方法
    • 二、ES6(及以後)新增的字元串方法
    • 三、總結

前言

    國中級前端工程師在工作中會因為使用錯誤的方法而引起各種bug,原因是有的方法并不是純函數,會帶來副作用,對調用方法的資料源進行修改,假如這不是你預期的後果,則會引起一些bug,而且這種bug往往查找起來比較費時費力,是以我在這裡幫助大家(也提醒自己)梳理一下各種資料類型原生方法,看看哪些方法是純函數,不帶來副作用,不改變原資料~哪些方法會對原資料源進行修改,而且傳回值可能并不是我們預期的值。

一、傳統字元串方法

方法名 作用 描述 傳回值 是否會修改原字元串
indexOf(str,start ) 查找字元串 傳回字元串中指定文本首次出現的索引(位置)可接受第二個參數作為搜尋起始位置 索引或-1
lastIndexOf(str,start ) 查找字元串 傳回字元串中指定文本最後一次出現的索引(位置)可接受第二個參數作為搜尋起始位置 索引或-1
search(str||reg) 查找字元串 傳回字元串中指定文本首次出現的索引(位置)不同于indexOf的點:不能接受第二個參數,可以接受正則搜尋 索引或-1
slice( start,end) 切割字元串 提取字元串的某個部分并在新字元串中傳回被提取的部分(不包括end項),如果忽略第二個參數,則切割剩下的部分 ,如果某個參數為負,則從結尾向前切割 切割後的新字元串
substring( +start,+end) 切割字元串 類似于slice方法,差別是不能接收負的參數 切割後的新字元串
substr( start,length ) 切割字元串 類似于slice方法,差別是在于第二個參數規定被提取部分的長度。 切割後的新字元串
replace( old,new ) 替換字元串中某部分 用另一個值替換在字元串中指定的值,預設對大小寫敏感(可以通過/i來執行大小寫不敏感的替換),預設隻替換首個比對(用/g來執行整個字元串所有比對項) 替換後的新字元串
toUpperCase( ) 轉換成大寫 把字元串轉換為大寫,不接收參數,執行方式為 usStr.toUpperCase() 轉換後的新字元串
toLowerCase( ) 轉換成小寫 把字元串轉換為小寫,不接收參數,執行方式為 usStr.toLowerCase() 轉換後的新字元串
concat( str1,str2,… ) 連接配接字元串 連接配接兩個或多個字元串 組合後的新字元串
String.trim() 去除空格 去除字元串兩端的空白符(IE8以上支援) 去空格後的新字元串
charAt(index) 查找字元 查找字元串中指定下标(位置)的字元串 (優于ES5提供的【】屬性通路字元串位置,不會傳回undefined) 字元串中index位置的字元 或者 空值
charCodeAt(index) 查找字元 查找傳回字元串中指定索引的字元 unicode 編碼 字元串中index位置的unicode編碼 或者 空值

二、ES6(及以後)新增的字元串方法

另外ES6提供了幾個新的字元串方法,這裡一并整理(隻整理常用方法,詳細的新增方法可以查閱阮一峰大神的ES6入門教程——字元串的新增方法):

方法名 作用 描述 傳回值 是否會修改原字元串
includes(str,start) 判斷字元串中是否包含某個字元 判斷字元串中是否包含該字元,支援第二個參數,表示開始搜尋的位置。 布爾值
startsWith(str,start) 判斷字元串是否以某個字元開頭 表示參數字元串是否在原字元串的頭部,支援第二個參數,表示開始搜尋的位置。 布爾值
endsWith(str,start) 判斷字元串是否以某個字元結尾 表示參數字元串是否在原字元串的尾部,支援第二個參數,表示開始搜尋的位置(不同于其他兩個方法,endsWith方法的第二個參數是針對前n個字元)。 布爾值
repeat(times) 将字元串複制times遍 參數如果是小數,會被取整。如果參數是負數或者Infinity,會報錯。參數NaN等同于 0參數是字元串,則會先轉換成數字, 複制後的字元串
padStart(length,str) 補全字元串 ES2017 新增—— 用于字元串長度不足length時在字元串頭部以str補全 補全後的字元串或原字元串,如果省略第二個參數則預設以空格補全,常見用途是補全指定位數 或者提示字元串格式 :‘09-12’.padStart(10, ‘YYYY-MM-DD’) // “YYYY-09-12”
padEnd(length,str) 補全字元串 ES2017 新增—— 用于字元串長度不足length時在字元串尾部以str補全 補全後的字元串或原字元串,如果省略第二個參數則預設以空格補全,常見用途是補全指定位數 或者提示字元串格式 :‘09-12’.padStart(10, ‘YYYY-MM-DD’) // “YYYY-09-12”
trimStart() 去除頭部空格 别名trimLeft() 去除頭部空格後的字元串。除了空格鍵,對字元串頭部的 tab 鍵、換行符等不可見的空白符号也有效。
trimEnd() 去除尾部空格 别名trimRight() 去除頭部空格後的字元串 。除了空格鍵,對字元串尾部的 tab 鍵、換行符等不可見的空白符号也有效。

三、總結

由此我們發現,所有的字元串方法都不會操作原字元串本身,而是會傳回新字元串/索引值/布爾值等,其實是由于ECMAScript中的原始值都是不可變的,是以不單單是字元串,包括number類型的原生方法,也都不會改變其原始值。