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对象本身就是被设计为不可变性的特性有一点关系。
"那个总是对你和颜悦色的人,也可能是伺机而动的坏人。"