用 splice函式分別實現 push、pop、shift、unshi

nintyuui發表於2021-09-09

主要需要注意的是不同方法他們本身返回的值應該是什麼,是陣列當前的長度,還是取出的元素的值,再在splice函式里面進行相應的return就可以了。具體如下:

2018.7.23 號關於此部落格對兩個返回元素值的函式進行了更正,返回 length 長度的沒有影響。詳見內容


  • 用 splice函式實現 push方法

function samePush(arr, value){
    arr.splice(arr.length, 0, value)    return arr.length
}var arr = [3, 4, 5]//使用push方法arr.push(10) // arr 變成[3,4,5,10],返回4(length長度)//呼叫函式samePush()samePush(arr,12) // arr變成[3, 4, 5, 10, 12],返回5(length長度)


  • 用 splice函式實現 pop方法

這裡需要進行更正,如果按照之前的return arr.splice(arr.length-1,1)這樣寫,返回的是一個含有一個數值的陣列,並不是元素值,所以還需要取出他的0位置元素,將它變成值

圖片描述

更正


function samePop(arr) {    // 之前錯誤寫法 return arr.splice(arr.length-1, 1)
    return (arr.splice(arr.length-1, 1))[0]  //詳細分析見上更正圖}var arr = [3, 4, 5, 16, 17]//使用pop方法arr.pop() // arr 變成[3, 4, 5, 16],返回17(取出的元素值)//呼叫函式samePop()samePop(arr) // arr 變成[3, 4, 5],返回16(取出的元素值)


  • 用 splice函式實現 shift方法

同上、這裡同樣需要更正,原因同上


圖片描述

更正

function sameShift(arr) {  
    // 之前錯誤寫法 return arr.splice(0,1)
    return (arr.splice(0,1))[0]  //詳細分析見上更正圖}var arr = [3, 4, 5, 16, 17]//使用shift方法arr.shift()  // arr 變成[4, 5, 16, 17],返回3(取出的元素值)//呼叫函式sameShift()sameShift(arr)  // arr 變成[5, 16, 17],返回4(取出的元素值)


  • 用 splice函式實現 unshift方法

function sameUnshift(arr,value) {  
    arr.splice(0,0,value)    return arr.length
}var arr = [3, 4, 5, 16, 17]//使用unshift方法arr.unshift(22)  //arr 變成[22, 3, 4, 5, 16, 17],返回6(length長度)//呼叫函式sameUnshift()sameUnshift(arr,11)  // arr 變成[11, 22, 3, 4, 5, 16, 17],返回7(length長度)


參考連結

  • 參考

  • 參考



作者:evenyao
連結:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3209/viewspace-2812844/,如需轉載,請註明出處,否則將追究法律責任。

相關文章