持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第25天,点击查看活动详情
数组方法push
可能经常被使用,但是说到unshift
,那应该用的就会少很多了,毕竟头部添加元素的场景还是相对较少的。今天我们就自己来写一个unshift
方法。
语法
arr.unshift(element1, ..., elementN)
unshift
方法和push
方法算是孪生兄弟了,一个头部添加一个尾部添加。掌握其一必知其二。
参数
elementN
:被添加到数组开头的元素或多个元素。
返回值
当调用该方法时,新的 length
属性值将被返回。
示例
定义一个空数组,往数组头部添加一个1,此时数组长度为1,故返回了一个数字1:
继续往头部添加一个2,此时数组长度为2,故返回了一个数字2:
继续添加,这次我们一次性添加两个数字:
wow!两个元素一次性添加进去了,并不是先加3再加4。
其他
unshift
其实就这么简单,没啥别的好说的。另外说明一下,参数可以是任何数据类型,文章仅以数字为例。
手写
又到了最有意思的手写环节,往数组头部添加元素,被添加的元素是整组顺序不变被添加到数组头部的,这点需要注意。
Array.prototype._unshift = function(...args) {
if(!args) return 0;
let temp = [...this];
let totalLen = this.length + args.length;
let thisLen = this.length;
let argsLen = args.length;
for(let i = 0; i < totalLen; i++) {
if(i < argsLen) {
this[i] = args[i];
} else {
this[i] = temp[i - argsLen];
}
}
return totalLen;
}
以上写法与真实的unshift
差别可能很大,我只是用自己的思路实现一下unshift
方法,自己懂了就行,不求甚解哈哈哈哈~
稍微小测一下
冇有问题~完结撒花。
如果小伙伴觉得本文不错的话,顺便支持下我的参赛文章我用一个div就画出了一个大西瓜~ ,万分感谢!