标签: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 ]
标签:fun 记录 pop 返回 value length let style 依次
原文地址:https://www.cnblogs.com/whm156399/p/12793221.html