手写数组方法(十七):unshift

168 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第25天,点击查看活动详情

数组方法push可能经常被使用,但是说到unshift,那应该用的就会少很多了,毕竟头部添加元素的场景还是相对较少的。今天我们就自己来写一个unshift方法。

语法

arr.unshift(element1, ..., elementN)

unshift方法和push方法算是孪生兄弟了,一个头部添加一个尾部添加。掌握其一必知其二。

参数

  • elementN:被添加到数组开头的元素或多个元素。

返回值

当调用该方法时,新的 length 属性值将被返回。

示例

定义一个空数组,往数组头部添加一个1,此时数组长度为1,故返回了一个数字1:

image.png

继续往头部添加一个2,此时数组长度为2,故返回了一个数字2:

image.png

继续添加,这次我们一次性添加两个数字:

image.png

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方法,自己懂了就行,不求甚解哈哈哈哈~

稍微小测一下

image.png

冇有问题~完结撒花。

如果小伙伴觉得本文不错的话,顺便支持下我的参赛文章我用一个div就画出了一个大西瓜~ ,万分感谢!