JS中陣列方法的封裝之slice

2021-09-28 13:37:26 字數 1657 閱讀 4654

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.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

更多專業前端知識,請上

【猿2048】www.mk2048.com

JS中陣列方法的封裝之slice

slice方法的功能 1 陣列的擷取 2 slice m,n 從陣列索引m開始,擷取到索引n,但是不包含n 前包後不包 slice m 從索引m開始,擷取到末尾 slice 陣列的轉殖 slice 0 索引負數 讓當前length 負數 3 返回值是擷取的陣列 4 原有陣列不發生改變 首先 先分清楚...

封裝陣列方法

標籤 空格分隔 未分類 push 1 封裝乙個函式,這個函式的名字叫做 push 2 這個函式的引數,第乙個是乙個陣列,第二個以後是任意的資料 3 呼叫這個函式,那麼會把第二個以後的所有引數,依次放到第乙個引數也就是那個陣列的最後乙個位置。4 這個函式返回值,是放入這些資料之後陣列的長度。var a...

陣列方法之forEach底層封裝

foreach方法是es5新增的陣列方法,用於陣列的迴圈遍歷,只有乙個引數,需要傳入乙個函式,很多人說是有三個引數,其實這種說話是錯誤的,是他的引數函式有三個形參,而不是foreach方法有三個引數。1 foreach方法接受乙個函式引數,該函式引數中有三個形參,當然有些形參用不到就可以不宣告。2 ...