JS陣列方法的原生實現

2021-10-12 20:22:38 字數 2571 閱讀 5465

該方法接受任意個引數,然後新增到陣列的末尾

function

push

(arr,

...arg)

//push 接受任意個引數,按照順序新增到陣列末尾,返回新的陣列長度

return arr.length;

}

該方法刪除並返回陣列的最後乙個元素,如果陣列為空,返回undefined

function

pop(arr)

//返回陣列最後乙個元素,並刪除該元素,陣列長度減一

let tmp = arr[arr.length -1]

; arr.length--

;return tmp;

}

該方法刪除並返回陣列的第乙個元素,實現時我們只要將第二個元素的值賦給第乙個,第三個的值賦給第二個,依次類推,直到最後乙個。

function

shift

(arr)

//刪除陣列的第乙個元素,並返回

let tmp = arr[0]

;for

(let i =

0; i < arr.length; i++

) arr.length--

;return tmp;

}

該方法將任意個數插入到陣列的前面,實現方法:將陣列從最後乙個元素開始依次向後移動引數的個數個位置,即把前面的位置空出來,然後在把引數依次插入到前面

function

unshift

(arr,

...arg)

for(

let i =

0; i < len; i++

)return arr.length;

}

該方法接受將任意多個引數合併到原陣列後,值得注意的事,如果引數是乙個陣列,需要將陣列展開。

function

concat

(arr,

...arg)

for(

let j =

0; j < arg.length; j++)}

else};

return new_arr;

}

該方法接受兩個引數,第乙個引數是擷取區間的開始索引,第二個引數是結束索引+1,需要注意的是

1、原生的slice方法當傳入的第乙個引數不是非數字型別,預設為0。引數為負數則加上陣列的長度計算,如果負數的絕對值大於陣列的長度,則算作0。

2、第二個引數不是數值時預設為陣列長度,如果為負數則加上陣列的長度計算。如果負數的絕對值大於陣列長度,則算作0.

3、返回值擷取的陣列

function

slice

(arr, start, end)

return new_arr;

}

該方法接受多個引數,其中第乙個引數為開始刪除的位置,第二個引數為刪除的長度,後面的引數為在刪除位置替換的元素,值得注意的是:

1、當第二個引數為0時,該函式可以用於在陣列中插入元素

2、原生的slpice方法當傳入的第乙個引數不是非數字型別,預設為0。引數為負數則加上陣列的長度計算,如果負數的絕對值大於陣列的長度,則算作0。

3、第二個引數如果為非數值或者負數,都算作0。

function

splice

(arr, start, num,

...arg)

let arrlen = arr.length;

for(

let i = start; i < arrlen - num; i++

)//刪除節點

arr.length -= num;

arrlen = arr.length;

for(

let j = arrlen -

1; j > arrlen -

1- len; j--

)//空出替換位置

for(

let j = start; j < start + len; j++

)//替換

return new_arr;

}

該方法用於倒置陣列,實習起來比較簡單,我們將陣列第乙個數和最後乙個交換,第二個和倒數第二個交換,一次類推,值得注意的是,該方法不僅會改變原陣列,還會返回原陣列。

function

reverse

(arr)

return arr;

}

該方法接受乙個資料,返回該資料在陣列中的從左往右第乙個索引

function

indexof

(arr,value)

}return-1

;}

該方法接受乙個資料,返回該資料在陣列中的從右往左第乙個索引

function

lastdexof

(arr,value)

}return-1

;}

原生JS常用陣列方法大全

一,陣列的方法 以下方法是原有陣列發生改變 1 shift 刪除陣列第一項,括號裡邊沒有引數。例如 var ary 1,2,3,4 var res ary.shift console.log res 返回的值是被刪除的第一項 1 console.log ary 列印出的是被刪除後的新的陣列 2,3,...

JS原生陣列方法的用法及其實現(二)

entries 方法返回乙個新的array iterator物件,該物件包含陣列中每個索引的鍵 值對。entries 函式返回的是乙個陣列的迭代物件,與generator 函式 可以參考阮一峰大叔寫的es6入門中的介紹generator 函式 的返回結果是一樣的,所以直接通過.next 依次得到結果...

js陣列原生方法的實現

1 陣列遍歷foreach 自定義foreach param fn 待執行方法 function foreach fn 2 陣列對映map 自定義map param fn 待執行方法 function map fn return list 3陣列過濾filter 自定義filter param fn...