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

您的位置:首頁技術文章
文章詳情頁

JS數組push、unshift、pop、shift方法的實現與使用方法示例

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

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

尾部添加(push)

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

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

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() 方法將一個或多個元素添加到數組的開頭,并返回該數組的新長度(該方法修改原有數組)。

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

例如只添加一位,則需要將數組的每個元素的索引依次向右移一位,假設原來數組長度是4,頭部添加一個元素,長度變為5.

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

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

過程如下

JS數組push、unshift、pop、shift方法的實現與使用方法示例

具體代碼實現:

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 ]

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

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

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

新數組的長度等于原數組的長度 + 參數的個數,從后往前循環,將原數組的最后一位,移動到新數組的最后一位,

因為需要在頭部插入數量為入參個數的元素,所以循環的起點為原數組的長度 + 參數的個數,循環的終點為入參的個數。

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

現在可以先把循環移動的邏輯寫出來

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]}

完整的代碼如下:

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 的最后一個元素,把數組長度減 1,并且返回它刪除的元素的值。如果數組已經為空,則 pop() 不改變數組,并返回 undefined 值。`

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

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() 方法用于把數組的第一個元素從其中刪除,并返回第一個元素的值。

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

最后循環數組,移動索引。

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測試上述代碼運行效果。

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript數組操作技巧總結》、《JavaScript遍歷算法與技巧總結》、《javascript面向對象入門教程》、《JavaScript數學運算用法總結》、《JavaScript數據結構與算法技巧總結》及《JavaScript錯誤與調試技巧總結》

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

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
福利一区和二区| 91精品尤物| 国产乱子精品一区二区在线观看 | 麻豆91小视频| 青青草91视频| 久久精品72免费观看| 欧美一区91| 国产欧美一区二区三区米奇| 日本在线视频一区二区| 日本在线一区二区三区| 日韩一区精品| 欧美一区激情| 国产精品久久国产愉拍| 国产欧美一区| 麻豆精品视频在线观看视频| 国产精选久久| 捆绑调教美女网站视频一区| 九九99久久精品在免费线bt| 美女在线视频一区| bbw在线视频| 久久免费国产| 国产亚洲综合精品| av不卡免费看| 美女国产一区二区三区| 久久精品欧洲| 国产精品国产一区| 99精品国产一区二区三区| 久久久久91| 久久xxxx| 日本天堂一区| 老司机精品视频网| 日韩免费av| 黑森林国产精品av| 国产精品13p| 亚洲综合小说| 亚洲一级大片| 麻豆一区二区99久久久久| 亚洲天堂av影院| 91精品高清| 91成人在线网站| 日韩av自拍| 亚洲综合日韩| 国产精品1区| 久久国产免费| 亚洲精品免费观看| 国产一区亚洲| 日韩精品免费一区二区夜夜嗨 | 91亚洲国产高清| 欧美日韩中文一区二区| 日韩三级一区| 精品久久网站| 女主播福利一区| 亚洲乱码久久| 天堂资源在线亚洲| 国产精品一站二站| 在线亚洲一区| 国产精品亚洲综合色区韩国 | 亚洲日产av中文字幕| 久久字幕精品一区| 欧美亚洲一区二区三区| 视频一区二区三区入口| 久久久久久一区二区| 亚洲网址在线观看| 日韩精品一二区| 日本综合精品一区| 国产精品久久777777毛茸茸| 99热免费精品| 国产精品白丝av嫩草影院| 亚洲一二av| 在线国产精品一区| 国产精品一区2区3区| 成人福利av| 一级成人国产| 欧美性www| 久久久亚洲欧洲日产| 国产日韩欧美中文在线| 欧美欧美黄在线二区| 91精品一区| 国产精品久久久久蜜臀| 日产精品一区二区| 欧美a一区二区| 青青青国产精品| 男人天堂欧美日韩| 国产精品igao视频网网址不卡日韩| 蜜桃视频一区二区三区 | 国产激情久久| 国产精品igao视频网网址不卡日韩| 免费观看日韩电影| 日韩精品麻豆| 日韩伦理一区| 91亚洲成人| 成人国产精品一区二区网站| 国产精品99久久久久久董美香| 久久99青青| 国产精品二区不卡| 国产精品久久久久久久久久10秀 | caoporn视频在线| 色爱av综合网| 欧美日韩激情| jiujiure精品视频播放| 不卡中文字幕| 日韩激情一区二区| 成人免费网站www网站高清| 午夜影院欧美| 老鸭窝一区二区久久精品| 综合激情五月婷婷| 国产毛片久久| 麻豆国产精品一区二区三区| 精品国产午夜肉伦伦影院| 日韩**一区毛片| 亚洲综合三区| 国产一级久久| 另类中文字幕国产精品| 99精品国产一区二区三区| 国产视频一区三区| 成人欧美一区二区三区的电影| 综合亚洲自拍| 久久国产中文字幕| 欧美亚洲免费| 91久久在线| 日韩精品91| 你懂的国产精品永久在线| 亚洲一区二区三区高清| 日韩一区二区在线免费| 在线日韩视频| 只有精品亚洲| 一区在线免费| 亚洲日本欧美| 日韩av不卡一区二区| 国产精品免费不| 日本一区二区高清不卡| 久久av影院| 国产主播一区| 亚洲精选成人| 亚洲五月综合| 综合国产在线| 亚洲精品麻豆| 久久一二三区| 日韩精品一区第一页| 亚洲精品在线观看91| 欧美高清一区| 欧美女激情福利| 亚洲免费一区二区| 亚洲一区二区三区久久久| 免费人成黄页网站在线一区二区| 日韩视频不卡| 日韩一二三区在线观看| 日本激情一区| av日韩中文| 久久久夜夜夜| 日韩精品第一区| 成人羞羞视频播放网站| 国产一区欧美| 亚洲免费中文| 久久精品xxxxx| av成人国产| 久久久影院免费| 91欧美极品| 麻豆91精品视频| 欧美日韩国产一区二区三区不卡 | 日韩国产精品久久久久久亚洲| 日韩国产欧美| 日韩精品免费视频一区二区三区 | 国产精品99一区二区三区| 在线亚洲人成| 日本a级不卡| 日韩精品一卡二卡三卡四卡无卡| 国产精品精品国产一区二区| 最新日韩欧美| 日韩和的一区二在线| 中文字幕一区二区三区在线视频| 日韩在线麻豆| 99精品视频在线| 蜜臀国产一区二区三区在线播放| 日韩在线网址| 日韩福利视频导航| 国内一区二区三区| 欧美~级网站不卡| 亚洲资源在线| 老司机精品视频在线播放| 亚洲伦乱视频| 亚洲综合二区| 国产精品videossex| 激情黄产视频在线免费观看| 在线精品视频在线观看高清| 日韩高清一区二区| 精品国产一区二| 亚洲性视频h| 日韩激情网站| 岛国av在线播放| 午夜久久影院| 国产精品hd| 99pao成人国产永久免费视频 | 国产麻豆精品| 欧美亚洲国产一区| 欧美亚洲一区二区三区| 欧美aa在线观看| 亚洲精品高潮| 91看片一区| 日韩二区在线观看|