其实还有一个方法push,应该放在一起说的,问题是他跟concat跑了,那只剩下这哥仨了。

  • pop:pop()方法从数组中删除最后一个元素,并返回该元素的值。此方法更改数组的长度。
    捎带一下push,push是在数组当中最后存入参数当中传递过来的元素,而pop恰好相反,删除数组当中最后一个元素。
    似乎没什么好说的,而且方法本身,也不需要任何参数,其返回值是从数组中删除的元素(当数组为空时返回undefined)。
    需要注意的是他会改变元素长度。好吧,我们开始重构吧!

    function pop (arr) {
    if (!(arr instanceof Array)) throw new Error("请确保参数类型为数组")
    var el;
    if (arr.length > 0) {
    el = arr[arr.length - 1]
    arr.length = arr.length - 1
    }
    return el
    }
  • shift:shift() 方法从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。
    shift真可以算作pop的兄弟方法了,pop删除的是最后一个元素,而shift删除的是第一个元素。其他所有要求和用法都完全一致的。使用shift时也不需要任何参数,而其返回值是从数组中删除的元素(当数组为空时返回undefined)。只不过该值是数组当中的第一个。
    还是直接上重构的代码吧!
    function shift (arr) {
    if (!(arr instanceof Array)) throw new Error("请确保参数类型为数组")
    var el;
    if (arr.length > 0) {
    el = arr[0]
    for (var i = 0; i < arr.length - 1; i++) {
    arr[i] = arr[i + 1]
    }
    arr.length = arr.length - 1
    }
    return el
    }

    与pop非常类似,多做的一步是,删除了第一个元素之后,需要把后面的所有元素前移,然后再将数组长度减小。
    既然第一个元素可以被删除,那么肯定也可以添加元素到第一位。

  • unshift:unshift() 方法将一个或多个元素添加到数组的开头,并返回该数组的新长度。
    看定义,是不是跟push很像,只不过他是添加到元素开头。
    既然添加元素,那么参数就必不可少了。
    arr.unshift(element1, ..., elementN)

    注意他修改的数组本身,而返回值是数组长度。有push方法在前,unshift就好理解的多了。
    直接重构吧!

    function unshift (arr) {
    if (!(arr instanceof Array)) throw new Error("请确保第一个参数类型为数组")
    let i = arguments.length - 1
    while (i) {
    for (var j = arr.length; j > 0; j--) {
    arr[j] = arr[j - 1]
    }
    arr[0] = arguments[i--]
    }
    return arr.length
    }

JavaScript数组方法--pop、shift、unshift的更多相关文章

  1. 数组方法push() pop() shift() unshift() splice() sort() reverse() contact()浅拷贝 slice()原数组拷贝

    push() pop() shift() unshift() splice() sort() reverse() 参考资料:https://wangdoc.com/javascript/stdlib/ ...

  2. js 的数组怎么push一个对象. Js数组的操作push,pop,shift,unshift JavaScrip

    push()函数用于向当前数组的添加一个或多个元素,并返回新的数组长度.新的元素将会依次添加到数组的末尾. 该函数属于Array对象,所有主流浏览器均支持该函数. 语法 array.push( ite ...

  3. JavaScript数组方法大全(推荐)

    原网址:http://www.jb51.net/article/87930.htm 数组在笔试中经常会出现的面试题,javascript中的数组与其他语言中的数组有些不同,为了方便之后数组的方法学习, ...

  4. JavaScript数组方法详解

    JavaScript数组方法详解 JavaScript中数组的方法种类众多,在ES3-ES7不同版本时期都有新方法:并且数组的方法还有原型方法和从object继承的方法,这里我们只介绍数组在每个版本中 ...

  5. JavaScript数组方法大集合

    JavaScript数组方法集合 本文总结一下js数组处理用到的所有的方法.自己做个笔记. 数组方法 concat() 合并两个或多个数组 concat()能合并两个或者多个数组,不会更改当前数组,而 ...

  6. 一站式超全JavaScript数组方法大全

    一站式JavaScript数组方法大全(建议收藏) 方法一览表 详细操作 本人总结了JavaScript中有关数组的几乎所有方法(包含ES6之后新增的),并逐一用代码进行演示使用,希望可以帮助大家! ...

  7. JavaScript数组方法--every、some、fill

    接上一篇,JavaScript数组方法--concat.push,继续其他的数组方法. every:every() 方法测试数组的所有元素是否都通过了指定函数的测试. 先看其使用方法: functio ...

  8. 【译】你应该了解的JavaScript数组方法

    让我们来做一个大胆的声明:for循环通常是无用的,而且还导致代码难以理解.当涉及迭代数组.查找元素.或对其排序或者你想到的任何东西,都可能有一个你可以使用的数组方法. 然而,尽管这些方法很有用,但是其 ...

  9. JavaScript 数组方法处理字符串 prototype

    js中数组有许多方法,如join.map,reverse.字符串没有这些方法,可以“借用”数组的方法来处理字符串. <!doctype html> <html lang=" ...

随机推荐

  1. MySQL-8.0.11与Navicat Premium安装教程

    1. 下载MySQL 下载地址: https:////dev.mysql.com/downloads/mysql/ 百度云 链接:https://pan.baidu.com/s/1bxAtnvChZZ ...

  2. JVM垃圾收集器-Serial收集器

    今天我给大家分享的是Serial收集器,垃圾收集器就是内存回收的具体实现.Java虚拟机规范中对垃圾收集器应该如何实现并没有任何规定,因此不同的厂商,不同的版本的虚拟机所提供的垃圾收集器都可能会有很大 ...

  3. Qt学习3---子窗口与父窗口

    创建子窗口后,主窗口的头文件需要  #include "子窗口头文件" 子窗口和父窗口之间相互切换 子窗口没有办法处理父窗口,子窗口此时就需要一个信号: * 信号必须有signal ...

  4. Favorite Donut(HDU 5442)最小表示法+二分

    题目给出一个字符串,由a~z表示甜度,随字典序增大,字符串首尾相连形成一个圈,要求从一个位置开始字典序最大的字符串,输出位置以及是顺时针还是逆时针表示.顺时针用0表示,逆时针用1表示. 此题只需要查找 ...

  5. PTA——数组平移

    PTA 7-52 数组元素循环右移问题 #include <stdio.h> int main(){ ]; int n,m,t,c; scanf("%d%d",& ...

  6. 添加本地jar包到maven仓库

    mvn install:install-file -Dfile=D:\video-lib\log4j-.jar -DgroupId=video -DartifactId=log4j -Dversion ...

  7. SG函数和SG定理

    Fibonacci again and again 利用SG函数求出每一堆的SG值,如果三个值的异或和为零 先手必败态,否则,先手必胜态. #include <bits/stdc++.h> ...

  8. Alpha阶段个人心得

    在一个学期的学习中,我从一个只会一个人打打小规模代码的初学者也变成了一个能参与到团队做项目的“入门码农”,而我们团队从一开始对大型项目的望而生畏无从下手变成细分任务各司其职,也了解并感受到github ...

  9. LG3211 [HNOI2011]XOR和路径

    题意 题目描述 给定一个无向连通图,其节点编号为 1 到 N,其边的权值为非负整数.试求出一条从 1 号节点到 N 号节点的路径,使得该路径上经过的边的权值的"XOR 和"最大.该 ...

  10. Missile Command 导弹指令

    发售年份 1980 平台 街机 开发商 雅达利(Atari) 类型 射击 https://www.youtube.com/watch?v=nokIGklnBGY