JavaScript中的Array對象提供了一個slice()方法,用於從已有的數組中返回選定的元素。
arrayObject.slice(start,end)
參數 | 描述 |
---|---|
start | 必需。規定從何處開始選取。如果是負數,那么它規定從數組尾部開始算起的位置。也就是說,-1 指最后一個元素,-2 指倒數第二個元素,以此類推。 |
end | 可選。規定從何處結束選取。該參數是數組片斷結束處的數組下標。如果沒有指定該參數,那么切分的數組包含從 start 到數組結束的所有元素。如果這個參數是負數,那么它規定的是從數組尾部開始算起的元素。 |
該函數會返回一個新的數組(非變異方法,不改變源數組),包含從start到end(不包含該元素)的arrayObject中的元素。因此要特別注意,如果是想要刪除數組中的一段元素,應該使用Array.splice()方法。
var arr = ['yanggb', 'yanggb1', 'yanggb2']; console.log(arr.slice(1)); // ['yanggb1', 'yanggb2'] console.log(arr.slice(2)); // ['yanggb2'] console.log(arr.slice(1, 2)); // ['yanggb1']
console.log(arr.slice(-1)); // ['yanggb2'] console.log(arr.slice(-2)); // ['yanggb1', 'yanggb2'] console.log(arr.slice(-2, -1)); // ['yanggb1'] console.log(arr); // ['yanggb', 'yanggb1', 'yanggb2']
注意到了嗎,在多次對源數組進行slice()操作,在最后源數組並沒有發生任何的改變。
另外,JavaScript中的String對象也提供了slice()方法,用於提取字符串的某個部分,並以新的字符串返回被提取的部分,使用起來和Array對象的slice()方法大同小異。
stringObject.slice(start,end)
參數 | 描述 |
---|---|
start | 要抽取的片斷的起始下標。如果是負數,則該參數規定的是從字符串的尾部開始算起的位置。也就是說,-1 指字符串的最后一個字符,-2 指倒數第二個字符,以此類推。 |
end | 緊接着要抽取的片段的結尾的下標。若未指定此參數,則要提取的子串包括 start 到原字符串結尾的字符串。如果該參數是負數,那么它規定的是從字符串的尾部開始算起的位置。 |
此函數會返回一個新的字符串,包括字符串stringObject從start開始(包括start)到end結束(不包括end)為止的所有字符。
String對象的方法slice()、substring()和substr() (不建議使用)都可返回字符串的指定部分。slice() 比 substring() 要靈活一些,因為它允許使用負數作為參數。slice() 與 substr() 有所不同,因為它用兩個字符的位置來指定子串,而substr() 則用字符位置和長度來指定子串。
var str = 'yanggb'; console.log(str.slice(1)); // 'anggb' console.log(str.slice(2)); // 'nggb' console.log(str.slice(1, 2)); // 'a' console.log(str.slice(-1)); // 'b' console.log(str.slice(-2)); // 'g' console.log(str.slice(-2, -1)); // 'g' console.log(str); // 'yanggb'
同樣注意的是,在多次對源字符串進行slice()操作,在最后源字符串並沒有發生任何的改變。這也與String對象本身就是被設計為不可變性的特性有一點關系。
"那個總是對你和顏悅色的人,也可能是伺機而動的壞人。"