這篇文章要跟大家介紹的內容是關於在JS中用slice封裝數組方法,有著一定的參考價值,有需要的朋友可以參考一下。
slice方法的功能
// 1) : 陣列的截取
// 2) :slice(m,n): 從陣列索引m開始,截取到索引n,但不包含n;[前包後不包]
// slice(m) : 從索引m開始,截取到結尾;
// slice():數組的複製slice(0);
// // 索引負數: 設目前length 負數;
// 3) : 傳回值是被截取的陣列
// 4) : 原有陣列不會改變;
/**
* 首先:先分清楚slice有幾種情況,slice的思想
* 傳的參數可以是其他類型的數據,只要能轉成有效數字就可以(所以參數的類型要求比較靈活)
* 其次,要注意的是只有第一個和第二個參數為有效參數,第三個及第三個以後的參數將對截取的結果不產生影響
對參數的處理:
* 我們暫且把第一個參數給變數start,第二個參數給變數end
* 1.當參數1、參數2同時為undefined或其中一個為undefined的情況下
* 情況1:參數1為undefined時,直接取start=0
* 情況2:參數2為undefined時,直接取end=this.length
# 2.當參數1和參數2都不是undefined的情況下
* 情況1:當第一個參數為負數的情況下:start取this.length與參數中的最大值;當第一個參數大於等於0的情況下,start直接取自己
* 情況2:當第二個參數為負數的情況下,end取this.length與end的和;當參數大於0,end取this.length與end中的最小值
對區間長度的處理:設定size=end-start
* 情況1:當區間長度小於等於0的情況下,直接傳回空數組
* 情況2:當區間長度大於0的情況下,不管對於字串還是數組,創建一個長度為size的數組,依次從start到end,賦值給新的數組,將新數組返回
@type {Array}
#*/
Array.prototype.mySlice = function (start,end) { var newAry = [];//创建一个变量用来接收返回值 var len = this.length;//变量接收当前数组的长度 //先对参数为undefined的情况进行处理 start = (start !== undefined)?start:0; end = (end !== undefined)?end:len; //对于参数的处理,采用三目运算符,由于在与0判断的时候自动转换为数字再进行判断,所以直接与0比较即可 start = (start>=0)?start:Math.max(0,len+start); end = (end>=0)?Math.min(end,len):len+end; var size = end - start;//用一个变量接收截取区间的长度 if(size>0){ //当区间长度大于0时,实例化一个长度为size的数组,并赋值给newAry newAry = new Array(size); //遍历数组,将当前数组[start,end)区间上的值依次赋值给newAry for(var i = 0;i<size;i++){ newAry[i] = this[i+start]; } }else{ //当区间长度小于等于0的情况下,直接返回空数组 return newAry; } return newAry; };
以上是在JS中用slice封裝數組方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!