數組(字符串)使用slice方法的目的就是截取目標數組(字符串),通俗的來講就是截取想要的。網上有很多slice方法的實例加以說明,在此主要是從特殊到一般對此方法進行了總結。
先說總結的方法,再看下面的例子進行理解。
假設已知一個數組長度為len,則參數的有效范圍為[-len,len-1],-len和0為第一個元素的下標,-1和len-1表示最后一個元素的下標。slice()總共有兩個參數,不填參數返回所有元素;若只填一個參數x,則x為起始元素的下標(起始元素一定會被截取),返回x之后的所有元素為新的數組(包括x),若x>=len,則返回空數組,即什么也沒截取;若x<=-len||x=0,則截取全部;若填寫兩個參數x,y(x為起始元素下標值,y為結束元素下標值。注:不截取下標為y的元素);先列出能截取到元素的取值情況(有效范圍內):x,y同號時(此處把0歸為正),x<y;x,y異號時,x為正,y為負,則|x|+|y|<len;x為負,y為正,則|x|+|y|>len;有效范圍外,x<len,y>-len。
以上包括所有情況,總的原則就是保證下標為y的元素要在x的后面才可截取。看下面例子加強理解
1、不填參數
1 var arr = new Array("a","b","c","d"); 2 console.log(arr.slice());//["a","b","c","d"]相當於截取全部
2、一個參數
1 var arr = new Array("a","b","c","d"); 2 console.log(arr.slice(2));//["c","d"]; 3 console.log(arr.slice(-2));//["c","d"]; 4 console.log(arr.slice(-5));//["a","b","c","d"]超出范圍 5 console.log(arr.slice(5));//[]超出范圍
3、兩個參數
1 var arr = new Array("a","b","c","d");//len = 4 有效[-4,3] 2 console.log(arr.slice(1,3));//["b","c"]包括b不包括d x<y 3 console.log(arr.slice(-3,-2));//["b"] x<y 4 console.log(arr.slice(0,-2));//["a","b"] |x|+|y|<4 5 console.log(arr.slice(-3,2));//["b"] |x|+|y|>4 6 console.log(arr.slice(4,2));//[] x>4 一定為空 7 console.log(arr.slice(-3,0));//[] y=0 一定為空 8 console.log(arr.slice(-3,-4));//[] y<=-4 一定為空 9 console.log(arr.slice(1,100));//["b","c","d"]y>len-1能取到最后一個元素
字符串與數組slice用法相似。