日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

JS數(shù)組push、unshift、pop、shift方法的實現(xiàn)與使用方法示例

瀏覽:230日期:2024-05-11 08:56:10

本文實例講述了JS數(shù)組push、unshift、pop、shift方法的實現(xiàn)與使用方法。分享給大家供大家參考,具體如下:

尾部添加(push)

push() 方法將一個或多個元素添加到數(shù)組的末尾,并返回該數(shù)組的新長度。

從解釋中可以看出,push方法只要將要添加的元素依次放到數(shù)組的最后即可,不會改變原有數(shù)組元素的索引。所以循環(huán)參數(shù)列表,將新元素依次放到數(shù)組的最后即可。

Array.prototype._push = function(...value) { for (var i = 0; i < arguments.length; i++) { this[this.length] = arguments[i] } return this.length}var arr = [1, 2, 3, 4]arr._push(9, 8)console.log(arr) // [ 1, 2, 3, 4, 9, 8 ]

頭部添加(unshift)

unshift() 方法將一個或多個元素添加到數(shù)組的開頭,并返回該數(shù)組的新長度(該方法修改原有數(shù)組)。

向數(shù)組的頭部添加元素,數(shù)組的長度也會發(fā)生變化,但不像尾部添加的操作,數(shù)組原有元素索引不改變。做頭部添加的操作,需要將原有元素的索引向右移動。

例如只添加一位,則需要將數(shù)組的每個元素的索引依次向右移一位,假設(shè)原來數(shù)組長度是4,頭部添加一個元素,長度變?yōu)?.

所以現(xiàn)在就變成:array.length = 5,而目前array[5 - 1]是最后一個元素,現(xiàn)在由于依次往后移動,所以,array[5]必須是最后一個元素

所以我們可以從數(shù)組的最后一位的下一位往前循環(huán),將array[i]賦值為array[i - 1],循環(huán)到1停止,將array的第0項賦值為需要添加的值。

過程如下

JS數(shù)組push、unshift、pop、shift方法的實現(xiàn)與使用方法示例

具體代碼實現(xiàn):

Array.prototype._unshift = function(value) { for (let i = this.length; i > 0; i--) { this[i] = this[i - 1] } this[0] = value return this.length}var arr = [1, 2, 3, 4]arr._unshift(8)console.log(arr); // [ 8, 1, 2, 3, 4 ]

但上面的代碼只實現(xiàn)了一個元素的頭部添加,unshift方法支持添加多個元素。例如:

var arr = [1, 2, 3, 4]arr.unshift(8, 7)console.log(arr); // [ 8, 7, 1, 2, 3, 4 ]

針對這樣的情況,需要知道傳入了幾個參數(shù),可以從arguments對象入手,思路還是上面的思路:先以最后生成的數(shù)組長度為基準(zhǔn)從后往前循環(huán),依次移動元素,然后將新元素依次放到數(shù)組的頭部

新數(shù)組的長度等于原數(shù)組的長度 + 參數(shù)的個數(shù),從后往前循環(huán),將原數(shù)組的最后一位,移動到新數(shù)組的最后一位,

因為需要在頭部插入數(shù)量為入?yún)€數(shù)的元素,所以循環(huán)的起點為原數(shù)組的長度 + 參數(shù)的個數(shù),循環(huán)的終點為入?yún)⒌膫€數(shù)。

但由于索引總是比長度少一位,所以起點和終點都需要減1。

現(xiàn)在可以先把循環(huán)移動的邏輯寫出來

Array.prototype._unshift = function(...value) { for (var i = (this.length + arguments.length - 1); i > arguments.length - 1; i--) { this[i] = this[i - arguments.length] }}

再思考一下,由于上一步已經(jīng)移動完了,數(shù)組頭部的位置已經(jīng)空出來了,第二步是有幾個參數(shù)就要插入幾個元素。所以現(xiàn)在只需要循環(huán)插入就好:

for(var k = 0; k < arguments.length; k++) { this[k] = arguments[k]}

完整的代碼如下:

Array.prototype._unshift = function(...value) { for (var i = (this.length + arguments.length - 1); i > arguments.length - 1; i--) { this[i] = this[i - arguments.length] } for(var k = 0; k < arguments.length; k++) { this[k] = arguments[k] } return this.length}var arr = [1, 2, 3, 4]arr._unshift(9, 8)console.log(arr); // [ 9, 8, 1, 2, 3, 4 ]

尾部刪除 (pop)

`pop() 方法將刪除 arrayObject 的最后一個元素,把數(shù)組長度減 1,并且返回它刪除的元素的值。如果數(shù)組已經(jīng)為空,則 pop() 不改變數(shù)組,并返回 undefined 值。`

這個很好實現(xiàn),按照定義一步一步做就可以。首先,記錄下最后一個元素,便于返回,之后從數(shù)組中刪除最后一個元素,將其指向null釋放掉,然后將數(shù)組的長度減1,最后判斷一下是否為空數(shù)組。

Array.prototype._pop = function () { if (!this.length) { return undefined } var end = this[this.length - 1] this[this.length - 1] = null this.length = this.length - 1 return end}var arr = [1, 2, 3, 4]arr._pop()console.log(arr); // [ 1, 2, 3 ]

頭部刪除(shift)

shift() 方法用于把數(shù)組的第一個元素從其中刪除,并返回第一個元素的值。

頭部刪除,會改變原有數(shù)組元素的索引,也就是將未被刪除的元素索引都往左移一位,首先要將被刪除的元素記錄下來便于返回,之后將數(shù)組第一個元素指向null,

最后循環(huán)數(shù)組,移動索引。

Array.prototype._shift = function () { if (!this.length) { return undefined } var start = this[0] this[0] = null for(var i = 0; i < this.length - 1; i++) { this[i] = this[i + 1] } this.length = this.length - 1 return start}var arr = [1, 2, 3, 4]arr._shift()console.log(arr); // [ 2, 3, 4 ]

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行效果。

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript數(shù)組操作技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《javascript面向?qū)ο笕腴T教程》、《JavaScript數(shù)學(xué)運算用法總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》及《JavaScript錯誤與調(diào)試技巧總結(jié)》

希望本文所述對大家JavaScript程序設(shè)計有所幫助。

標(biāo)簽: JavaScript
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚州欧美在线| 久久天堂精品| 水蜜桃精品av一区二区| 日韩高清不卡一区二区| 日产欧产美韩系列久久99| 国产麻豆精品| 国产欧美午夜| 日韩激情精品| 欧美va天堂在线| 国产精品亚洲欧美| 久久亚洲不卡| 国产精品亚洲一区二区在线观看| 亚洲一级淫片| 日韩黄色在线观看| 国产精品久久久久久久久免费高清 | 亚洲黄页一区| 一区二区三区四区精品视频| 成人三级高清视频在线看| 久久狠狠婷婷| 免费不卡在线视频| 亚洲a在线视频| 福利欧美精品在线| 亚洲精品一区二区在线播放∴| 精品久久精品| 久久亚洲精品中文字幕蜜潮电影| 天堂中文av在线资源库| 欧美日一区二区三区在线观看国产免 | 日本视频一区二区| 午夜一级久久| 日韩中文字幕在线一区| 99免费精品| 美女久久久久久 | 亚洲视频二区| 国产精品xxxav免费视频| 国产中文字幕一区二区三区| 久久国产影院| 亚洲毛片在线| 成人在线免费观看网站| 亚洲精品一区二区在线看| 免费黄网站欧美| 国产精品白浆| 在线日韩中文| 日韩成人精品一区二区三区| 久久久久久网| 蜜桃久久久久久| 国产人成精品一区二区三| 日韩国产一区二区三区| 亚洲国产一区二区三区在线播放| 欧美精选一区二区三区| 国产精品网站在线看| 亚洲一区久久| 视频一区二区三区在线| 国产日本久久| 99成人在线视频| 亚洲欧洲日韩| 日本在线啊啊| 日韩国产在线观看| 成人亚洲一区二区| 国产探花一区| 免费久久久久久久久| 中文字幕一区二区精品区| 久久中文字幕一区二区| 欧美性感美女一区二区| 亚洲精品精选| 99热精品在线观看| 日韩亚洲一区在线| 日韩精品欧美成人高清一区二区| 国产精品羞羞答答在线观看| 夜夜精品视频| 久久高清免费| 久久国产精品成人免费观看的软件| 成人精品中文字幕| 91精品福利观看| 黄色国产精品| av在线资源| 综合激情婷婷| 999国产精品永久免费视频app| 国产精品a久久久久| 美女国产精品| 99久久夜色精品国产亚洲狼 | 国产亚洲毛片在线| 日韩欧美一区免费| 一区二区亚洲视频| 婷婷久久免费视频| 国产精品一区二区三区美女| 国产亚洲久久| 免费视频一区三区| 黄色不卡一区| 亚洲欧美日本视频在线观看| 激情偷拍久久| 亚洲啊v在线免费视频| 日本免费久久| 日韩精品免费一区二区夜夜嗨| 日韩伦理在线一区| 亚洲欧洲高清| 中文字幕高清在线播放| 国产精品久久久久久久免费软件 | 天堂久久一区| 激情久久久久久| 欧美国产亚洲精品| 免费日韩av片| 婷婷激情综合| 成人羞羞视频在线看网址| 久久久国产精品入口麻豆| 日韩精品欧美大片| 日韩欧美三区| 亚洲精品日本| 日本一区二区中文字幕| 亚洲v天堂v手机在线| 少妇精品在线| 日韩精品欧美精品| 日韩1区2区3区| 日韩黄色av| 国产亚洲人成a在线v网站| 亚洲免费毛片| 在线一区二区三区视频| 免播放器亚洲一区| 中文字幕亚洲精品乱码| 亚洲精品系列| 欧美日一区二区在线观看| 日韩二区在线观看| 国产精品一区二区三区av麻| 国产精品天堂蜜av在线播放| 99精品99| 亚洲精品大片| 免费看精品久久片| 日韩制服丝袜先锋影音| 亚洲永久av| 日韩影院精彩在线| 精品视频国内| 国产视频一区三区| 国产麻豆一区| 国产亚洲在线| 国产精品久久久久久久久久久久久久久 | 国产999精品在线观看| 亚洲资源网站| 久久蜜桃精品| 97人人精品| **爰片久久毛片| 欧美不卡高清| 成人午夜亚洲| 国产精品任我爽爆在线播放| 播放一区二区| 精品免费在线| 国产精品三p一区二区| 日韩免费视频| 国产日韩综合| 天堂va欧美ⅴa亚洲va一国产| 日韩国产高清在线| 国产精品久久久一区二区| 日韩av在线中文字幕| 亚洲高清不卡| 亚洲毛片网站| 久久av超碰| 日韩精品午夜| 蜜臀91精品一区二区三区| 青草久久视频| 国产欧美另类| 日韩国产欧美在线视频| 美女少妇全过程你懂的久久| 亚洲欧美在线综合| 国产午夜精品一区二区三区欧美 | 自拍日韩欧美| 日韩中文字幕区一区有砖一区| 国产精品多人| 日韩中文字幕| 亚洲国产一区二区在线观看 | 激情综合亚洲| 肉色欧美久久久久久久免费看| 国产精品大片| 久久av偷拍| 免费在线欧美黄色| 日韩1区2区| 91精品蜜臀一区二区三区在线| 国产乱码精品一区二区三区四区 | 激情婷婷综合| 日韩高清中文字幕一区| 国产色播av在线| 91高清一区| 国产精品毛片久久久| 午夜精品亚洲| 国产乱码精品一区二区三区四区| 精品捆绑调教一区二区三区 | 国产精品66| 日韩视频在线一区二区三区| 国产精品九九| 午夜国产精品视频| 精品国产一区二区三区2021| 久久99久久人婷婷精品综合| 欧美日本不卡| 在线人成日本视频| 日韩精品国产精品| 中文字幕一区二区av| 喷白浆一区二区| 欧美+日本+国产+在线a∨观看| 另类中文字幕国产精品| 日韩精品dvd| 久久中文字幕av| 亚洲精品国产偷自在线观看| 黄色欧美日韩|