JS数组操作之增删改查的简单实现


Posted in Javascript onAugust 21, 2017

JS提供了很多方便操作数组的方法,本文所要分享的就是如何快速对数组进行增、删、改、查。

一、增

1、push()

可接收任意数量的参数,把它们逐个添加至数组末尾,并返回修改后数组的长度。例如:

var arr = [];
var len = arr.push(1);
console.log(arr); // [1]
console.log(len); // 1
len = arr.push(2,3);
console.log(arr); // [1,2,3]
console.log(len); // 3

2、unshift()

该方法与push()类似,也可接收任意数量的参数,只不过是将参数逐个添加至数组前端而已,同样返回新数组长度。咱们接着上面的例子:

var len = arr.unshift(0);
console.log(arr); // [0, 1, 2, 3]
console.log(len); // 4
len = arr.unshift(-2,-1);
console.log(arr);  // [-2, -1, 0, 1, 2, 3]
console.log(len);  // 6

3、concat()

该方法与push()方法有点类似,同样是将元素添加至数组末尾,只不过这个数组已经不是原来的那个数组了,而是其副本,所以concat()操作数组后会返回一个新的数组。具体用法如下:

① 不传参数,返回当前数组副本

② 传递一或多个数组,则该方法会将这些数组中的每一项都添加到结果数组中

③ 传递非数组参数,这些参数就会被直接添加到结果数组的末尾

继续接着上面的栗子:

var arr1 = arr.concat(4,[5,6]);
console.log(arr);  // [-2, -1, 0, 1, 2, 3]
console.log(arr1);  // [-2, -1, 0, 1, 2, 3, 4, 5, 6]

例子中一目了然,原数组保持不变,新数组后面添加了4、5、6三个元素。

4、splice()

前面的三个方法都具有很大局限性,因为不是添加到数组前就是数组后,而splice()就不一样了,它非常灵活和强大。灵活是因为它可以添加元素到数组的任意位置,强大是因为它除了可以添加元素之外还具有删除和替换元素的功能(这个后面会陆续讲到)。

splice()可以向数组指定位置添加任意数量的元素,需要传入至少3个参数: 起始位置、0(要删除的元素个数)和要添加的元素。

依然接着上面的例子继续:

arr.splice(3,0,0.2,0.4,0.6,0.8);
console.log(arr); // [-2, -1, 0, 0.2, 0.4, 0.6, 0.8, 1, 2, 3]

可以看出,splice()与push()和unshift()一样是直接在原数组上修改的。

二、删

1、pop()

与push()方法配合使用可以构成后进先出的栈,该方法可从数组末尾删除最后一项并返回该项。

接着上例:

var item = arr.pop();
console.log(item);  // 3
console.log(arr);  // [-2, -1, 0, 0.2, 0.4, 0.6, 0.8, 1, 2]

2、shift()

与push()方法配合使用可以构成先进先出的队列,该方法可删除数组第一项并返回该项。

继续接着上例:

var item = arr.shift();
console.log(item); // -2
console.log(arr); // [-1, 0, 0.2, 0.4, 0.6, 0.8, 1, 2]

3、slice()

该方法同concat()一样是返回一个新数组,不会影响原数组,只不过slice()是用来裁剪数组的,返回裁剪下来的数组,具体用法如下:

slice()方法可以接受一或两个参数,即要返回项的起始和结束位置。在只有一个参数的情况下,slice()方法返回从该参数指定位置开始到当前数组末尾的所有项。如果有两个参数,该方法返回起始和结束位置之间的项——但不包括结束位置的项。

咱们还是继续接着上面例子吧~~

var arr2 = arr.slice(2,6);
console.log(arr); // [-1, 0, 0.2, 0.4, 0.6, 0.8, 1, 2]
console.log(arr2); // [0.2, 0.4, 0.6, 0.8]

4、splice()

好,继续讲这个“万能”的方法。

上面讲到,该方法在添加数组元素的时候需要传入3个以上参数,而其中第2个参数就是用于指定要删除元素的个数的,那时我们传的是数字0。那么,如果单单只需删除元素,我们就只需给splice()传入两个参数,第1个参数用于指定要删除的第一项的位置,第2个参数用于指定要删除元素的个数。

继续上例~~

arr.splice(2,4);
console.log(arr); // [-1, 0, 1, 2]

从索引项为2的位置开始删除4个元素,所以结果为 [-1, 0, 1, 2]。

三、改

这个其实最灵活的方式就是直接使用splice()这个强大的方法了,其实通过以上对该方法的了解,我们大致就能知道使用该方法修改数组元素的基本原理。

原理很简单,就是向指定位置插入任意数量的元素,且同时删除任意数量的元素。

依然继续上例~~

arr.splice(2,1,0.5,1,1.5);
console.log(arr);  // [-1, 0, 0.5, 1, 1.5, 2]

四、查

indexOf()和lastIndexOf()

这两个方法都接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。其中,indexOf()从数组的开头(位置0)开始向后查找,lastIndexOf()方法则从数组的末尾开始向前查找。

例如:

var index = arr.indexOf(0);
console.log(index);  // 1
index = arr.indexOf(3,0);
console.log(index);  // -1

当找不到该元素时,返回 -1 ,lastIndexOf()方法同理。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript 键盘事件的组合使用实现代码
May 04 Javascript
如何解决easyui自定义标签 datagrid edit combobox 手动输入保存不上
Dec 26 Javascript
jQuery中show与hide方法用法示例
Sep 16 Javascript
使用json来定义函数,在里面可以定义多个函数的实现方法
Oct 28 Javascript
jQuery实现根据生日计算年龄 星座 生肖
Nov 23 Javascript
JS实现的验证身份证及获取地区功能示例
Jan 16 Javascript
JS异步加载的三种实现方式
Mar 16 Javascript
Vue2.0 axios前后端登陆拦截器(实例讲解)
Oct 27 Javascript
使用Vue.js和Element-UI做一个简单登录页面的实例
Feb 23 Javascript
小程序清理本地缓存的方法
Aug 17 Javascript
Vue.js 十五分钟入门图文教程
Sep 12 Javascript
Vue基本使用之对象提供的属性功能
Apr 30 Javascript
JS实现评价的星星功能
Aug 20 #Javascript
详解A标签中href=""的几种用法
Aug 20 #Javascript
Cropper.js 实现裁剪图片并上传(PC端)
Aug 20 #Javascript
Bootstrap 模态框(Modal)带参数传值实例
Aug 20 #Javascript
mui 打开新窗口的方式总结及注意事项
Aug 20 #Javascript
ES6扩展运算符的用途实例详解
Aug 20 #Javascript
关于JavaScript的单双引号嵌套问题
Aug 20 #Javascript
You might like
解决GD中文乱码问题
2007/02/14 PHP
在PHP 7下安装Swoole与Yar,Yaf的方法教程
2017/06/02 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
IE的fireEvent方法概述及应用
2013/02/22 Javascript
使用js的replace()方法查找字符示例代码
2013/10/28 Javascript
基于jQuery+Cookie实现的防止刷新的在线考试倒计时
2015/06/19 Javascript
jquery封装插件时匿名函数形参和实参的写法解释
2017/02/14 Javascript
javascript 中的try catch应用总结
2017/04/01 Javascript
微信小程序之数据缓存的实例详解
2017/09/29 Javascript
JS实现利用两个队列表示一个栈的方法
2017/12/13 Javascript
教你如何用node连接redis的示例代码
2018/07/12 Javascript
react项目实践之webpack-dev-serve
2018/09/14 Javascript
vue父组件触发事件改变子组件的值的方法实例详解
2019/05/07 Javascript
微信小程序云开发使用方法新手初体验
2019/05/16 Javascript
vue Element左侧无限级菜单实现
2020/06/10 Javascript
[48:38]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs Secret
2018/03/31 DOTA
基于Python实现文件大小输出
2016/01/11 Python
Python脚本获取操作系统版本信息
2016/12/17 Python
Python遍历文件夹和读写文件的实现方法
2017/05/10 Python
Python实现的文本简单可逆加密算法示例
2017/05/18 Python
python3.5 tkinter实现页面跳转
2018/01/30 Python
在Pycharm中项目解释器与环境变量的设置方法
2018/10/29 Python
Python 3 使用Pillow生成漂亮的分形树图片
2019/12/24 Python
浅谈matplotlib默认字体设置探索
2021/02/03 Python
htnl5利用svg页面高斯模糊的方法
2018/07/20 HTML / CSS
留学自荐信
2013/10/10 职场文书
应用心理学个人的求职信
2013/12/08 职场文书
《我的伯父鲁迅先生》教学反思
2014/02/12 职场文书
《一本男孩子必读的书》教学反思
2014/02/19 职场文书
安全责任协议书
2014/04/21 职场文书
机关作风建设剖析材料
2014/10/11 职场文书
2015年毕业实习工作总结
2014/12/12 职场文书
2015年国庆节寄语
2015/08/17 职场文书
2016关于军训的心得体会
2016/01/11 职场文书
Golang MatrixOne使用介绍和汇编语法
2022/04/19 Golang
css中有哪些方式可以隐藏页面元素及区别
2022/06/16 HTML / CSS