首頁 >web前端 >js教程 >在JS中用slice封裝數組方法

在JS中用slice封裝數組方法

不言
不言原創
2018-07-20 09:34:221896瀏覽

這篇文章要跟大家介紹的內容是關於在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實作日期選擇器的程式碼

對於js閉包進一步理解

###

以上是在JS中用slice封裝數組方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn