javascript中的slice()方法
JavaScript中的Array对象提供了一个slice()方法,用于从已有的数组中返回选定的元素。
arrayObject.slice(start, end)
参数说明
start | 必需(否则没有意义)。规定从何处开始选取,即提取起始处的索引(从0开始),从该索引开始提取原数组元素。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1指最后一个元素,-2指倒数第二个元素,以此类推。如果没有指定该参数,则从索引0开始。如果该参数大于原数组的长度,则会返回空数组。 |
end | 可选。规定从何处结束选取,该参数是数组片断结束处的数组下标,即提取终止处的索引(从0开始),在该索引处结束提取原数组元素,该方法会提取原数组中索引从start到end的所有元素(包含start,但不包含end)。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。如果没有指定该参数,那么切分的数组包含从start到数组结束的所有元素。如果该参数大于数组的长度,也会一直提取到原数组末尾。 |
返回值
返回一个新的数组,包含从start到end(不包括该元素)的arrayObject中的元素。
注意事项
这个方法并不会修改原来的数组,而是返回一个浅复制了原数组中的元素的一个新数组。浅复制的意思就是说,如果向两个数组任一中使用Array.push()添加了新元素或使用Array.splice()方法移除了元素,另一个是不会受到影响的;但是如果修改了数组中的元素,则情况会因为数组中的元素类型不同而有所不同。
1.如果该元素是个对象引用 (不是实际的对象),slice()方法会拷贝这个对象的引用到新的数组里。也就是说,两个数组中的这两个元素都引用了同一个对象,如果被引用的对象发生改变,则新的和原来的数组中的这个元素也会同步发生改变。
2.对于字符串、数字及布尔值来说(不是String、Number或者Boolean对象),slice()方法会拷贝这些值到新的数组里。在别的数组里修改这些字符串或数字或是布尔值,将不会影响另一个数组。
简单示例1
var arr = ["yanggb1", "yanggb2", "yanggb3"]; var arr1 = arr.slice(1, 2); // ["yanggb2"]
简单示例2
var arr = ["yanggb1", "yanggb2", "yanggb3"]; var arr1 = arr.slice(1); // ["yanggb2", "yanggb3"]
巧妙用处
这个方法在截断需要的格式化日期的场景中十分好用,我们来感受一下。
var today = '2019-05-20'; // 我想要yyyy-MM-dd的形式 var today1 = today.split('-').slice(0).join('-'); // 2019-05-20 // 我想要MM-dd的形式 var today1 = today.split('-').slice(1).join('-'); // 05-20 // 我想要dd的形式 var today2 = today.split('-').slice(2).join('-'); // 20
如果要切换不同的日期形式,只需要修改slice()方法中的参数即可,十分灵活。
"其实生活在井里也挺好的,就是偶尔,会觉得世界很空,生活很咸。"
你要去做一个大人,不要回头,不要难过。