码迷,mamicode.com
首页 > 编程语言 > 详细

数组的unshift、pop实现方法

时间:2020-04-28 13:22:59      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:fun   记录   pop   返回   value   length   let   style   依次   

头部添加(unshift)

  unshift()方法将一个或多个元素添加到数组的开头,并返回该数组的新长度(该方法修改原有数组)。

  向数组的头部添加元素,数组的长度也会发生变化,但不像尾部添加的操作,数组原有元素索引不改变。做头部添加的操作,需要将原有元素的索引向右移动。

  例如只添加一位,则需要将数组的每个元素的索引依次向右移一位,假设原来数组长度是4,头部添加一个元素,长度变为5.

  所以现在就变成:array.length=5,而目前array[5-1]是最后一个元素,现在由于依次往后移动,所以,array[5]必须是最后一个元素

  所以我们可以从数组的最后一位的下一位往前循环,将array<i>赋值为array[i-1],循环到1停止,将array的第0项赋值为需要添加的值。

代码实现:

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

尾部删除(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 ]  

 

数组的unshift、pop实现方法

标签:fun   记录   pop   返回   value   length   let   style   依次   

原文地址:https://www.cnblogs.com/whm156399/p/12793221.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!