JavaScript数组方法--pop、shift、unshift
其实还有一个方法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的更多相关文章
- 数组方法push() pop() shift() unshift() splice() sort() reverse() contact()浅拷贝 slice()原数组拷贝
push() pop() shift() unshift() splice() sort() reverse() 参考资料:https://wangdoc.com/javascript/stdlib/ ...
- js 的数组怎么push一个对象. Js数组的操作push,pop,shift,unshift JavaScrip
push()函数用于向当前数组的添加一个或多个元素,并返回新的数组长度.新的元素将会依次添加到数组的末尾. 该函数属于Array对象,所有主流浏览器均支持该函数. 语法 array.push( ite ...
- JavaScript数组方法大全(推荐)
原网址:http://www.jb51.net/article/87930.htm 数组在笔试中经常会出现的面试题,javascript中的数组与其他语言中的数组有些不同,为了方便之后数组的方法学习, ...
- JavaScript数组方法详解
JavaScript数组方法详解 JavaScript中数组的方法种类众多,在ES3-ES7不同版本时期都有新方法:并且数组的方法还有原型方法和从object继承的方法,这里我们只介绍数组在每个版本中 ...
- JavaScript数组方法大集合
JavaScript数组方法集合 本文总结一下js数组处理用到的所有的方法.自己做个笔记. 数组方法 concat() 合并两个或多个数组 concat()能合并两个或者多个数组,不会更改当前数组,而 ...
- 一站式超全JavaScript数组方法大全
一站式JavaScript数组方法大全(建议收藏) 方法一览表 详细操作 本人总结了JavaScript中有关数组的几乎所有方法(包含ES6之后新增的),并逐一用代码进行演示使用,希望可以帮助大家! ...
- JavaScript数组方法--every、some、fill
接上一篇,JavaScript数组方法--concat.push,继续其他的数组方法. every:every() 方法测试数组的所有元素是否都通过了指定函数的测试. 先看其使用方法: functio ...
- 【译】你应该了解的JavaScript数组方法
让我们来做一个大胆的声明:for循环通常是无用的,而且还导致代码难以理解.当涉及迭代数组.查找元素.或对其排序或者你想到的任何东西,都可能有一个你可以使用的数组方法. 然而,尽管这些方法很有用,但是其 ...
- JavaScript 数组方法处理字符串 prototype
js中数组有许多方法,如join.map,reverse.字符串没有这些方法,可以“借用”数组的方法来处理字符串. <!doctype html> <html lang=" ...
随机推荐
- Java基于opencv实现图像数字识别(五)—腐蚀、膨胀处理
腐蚀:去除图像表面像素,将图像逐步缩小,以达到消去点状图像的效果:作用就是将图像边缘的毛刺剔除掉 膨胀:将图像表面不断扩散以达到去除小孔的效果:作用就是将目标的边缘或者是内部的坑填掉 使用相同次数的腐 ...
- mysql _触发器
MySQL 触发器 MySQL包含对触发器的支持.触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行. 1.创建触发器在MySQL ...
- Linux创建用户与权限赋值
1.设置文件的权限 1).解说: d:是英语directory的缩写,表示“目录”.就是说这是一个目录. l:是英语link的缩写,表示“链接”.就是说这是一个链接. b:块设备文件 c:字符设备 s ...
- 记一次禁止chrome打印出现空白页的情况
项目中遇到一个问题:就是chrome浏览器打印时,会多少出一张空白页.经过Google,问题解决.
- Matlab 2017b遇到绘图低级错误
解决方案: 命令窗口中输入:opengl('save','software') 回车 重启软件
- uva 202
#include <iostream> #include<cstdio> #include<cstring> #include<algorithm> # ...
- 巡风配置安装 –centOS6.5
巡风是一款适用于企业内网的漏洞快速应急.巡航扫描系统,通过搜索功能可清晰的了解内部网络资产分布情况,并且可指定漏洞插件对搜索结果进行快速漏洞检测并输出结果报表. 其主体分为两部分:网络资产识别引擎,漏 ...
- Java修饰符final总结
final 的意思是最终的,不可改变的. final可以用来修饰 a.类. b.方法(包括类方法和对象方法). c.变量(包括成员变量.局部变量). 1. final修饰类: 用final修饰的类不能 ...
- Mvc Session 设置以后再构造函数中取值时为null问题
在登录界面写了一个session在 别的页面的构造函数中获取始终未null 后来改成 System.Web.HttpContext.Current.Session["User"] ...
- DevExpress中GridControl的重新绑定数据后如何刷新 (转)
如果对girdcontrol的datasource新添加数据,重新刷新, gridControl1.DataSource = list; gridView1.RefreshData();