JavaScript中的数组操作
在之前的一篇博客中提到了一些 JavaScript Array 对象的方法,比如 slice()、splice()、pop()、push() 等,博客链接:
http://xitongjiagoushi.blog.51cto.com/9975742/1653063
JavaScript Array还有一些常用的操作或者说技巧,比如清空数组,克隆数组等,下面来看一下。
1. 指定位置插入元素:
使用 Array.prototype.splice()不仅可以删除数组中的元素,也可以在指定位置添加元素:
var ary = [1, 2, 3, 4, 5]; ary.splice(5, 0,6); console.log(ary); //[1, 2, 3, 4, 5, 6]
如果不介意扩展 Array.prototype,可以为其添加如下方法:
Array.prototype.insert = function(index, items) {if(items instanceof Array) {var currentIndex = index;for(var i = 0; i < items.length; i++) {this.splice(currentIndex, 0, items[i]);currentIndex++;}} else {this.splice(index, 0, items);} }; ary.insert(6, 7); console.log(ary); //[1, 2, 3, 4, 5, 6, 7] ary.insert(7, [8,9]); console.log(ary); //[1, 2, 3, 4, 5, 6, 7, 8, 9]
2. 清空数组:
通常我们会这样清空数组:
ary = []; console.log(ary); //[]
但是这并不是最优的方式,因为这会创建一个对新的空数组的引用:
var ary = [1, 2, 3, 4, 5],newAry = ary; //ary指向一个新的空数组 ary = []; //并不影响原数组([1, 2, 3, 4, 5]) console.log(newAry); //[1, 2, 3, 4, 5]
var ary = [1, 2, 3, 4, 5],newAry = ary; //ary还是对原数组([1, 2, 3, 4, 5])的引用 ary.length = 0; //原数组被清空 console.log(newAry); //[]
通过上面的解释不难看出,最优的方式是将数组的 length 属性赋值为 0:
var ary = [1, 2,3, 4, 5]; ary.lengh = 0; console.log(ary); //[]
注:
对 String.prototype.length 赋值并不能影响 String 的长度,这一点要和对 Array.prototype.length 赋值区分开来。
3. 数组元素排序:
Array.prototype.sort()用来排序数组,不传参时按默认规则排序,如:
[1, 3, 9,2].sort(); //[1, 2, 3, 9] [1, “a”, function(){}, 12, “c”].sort(); //[1, 12, {}, “a”, “c”, [Function]]
如果想要定制自己的排序规则,需要传入一个有返回值的排序函数,比如想要对下面的对象数组按元素的 age 属性顺序排序:
var objAry = [{name: “Lucy”, age: 28, sex: “female”},{name: “Tom”, age: 26, sex: “male”},{name: “Jordan”, age: 30, sex: “male”} ]; objAry.sort(function(obj1, obj2) {return obj1.age - obj2.age; }); //排序结果 //[ // {name: “Tom”, age: 26, sex: “male”}, // {name: “Lucy”, age: 28, sex: “female”}, // {name: “Jordan”, age: 30, sex: “male”} //]
4. 克隆数组:
克隆数组?简单,for循环走起:
var ary = [1, 2, 3, 4, 5],newAry = []; for(var i = 0; i< arr.length; i++) {newAry.push(ary[i]); } console.log(newAry); //[1, 2, 3, 4, 5]
完成任务,但是每次这么克隆敲键盘可是够受的了,用点高端简洁的方法:
var newAry = ary.slice(); //第一种方法 var newAry = ary.concat(); //第二种方法
简洁有效的完成任务,妈妈再也不用担心我的键盘会敲坏了。
完。
转载于:https://blog.51cto.com/xitongjiagoushi/1675256
JavaScript中的数组操作相关推荐
- 遍历JavaScript中的数组
在Java中,可以使用for循环遍历数组中的对象,如下所示: String[] myStringArray = {"Hello", "World"}; for ...
- JavaScript中的数组和字符串
知识内容: 1.JavaScript中的数组 2.JavaScript中的字符串 一.JavaScript中的数组 1.JavaScript中的数组是什么 数组指的是数据的有序列表,每种语言基本上都有 ...
- JavaScript中的数组创建
JavaScript中的数组创建 本文转载自:众成翻译 译者:loveky 链接:http://www.zcfy.cc/article/713 原文:http://rainsoft.io/power- ...
- JavaScript中的骚操作
JavaScript中的骚操作--记录自用 JavaScript中的骚操作 数组去重 数组转化为对象(Array to Object) 活用三元表达式 转换为数字类型(Convert to Numbe ...
- JavaScript中遍历数组的方法
目录 JavaScript中遍历数组的方法 1.for 循环遍历 2.forEach 遍历 3.map 遍历 4.for...of 遍历 5.filter 遍历 6.some 遍历 7.keys,va ...
- 如何在JavaScript中比较数组?
本文翻译自:How to compare arrays in JavaScript? I'd like to compare two arrays... ideally, efficiently. 我 ...
- 如何检查变量是否是JavaScript中的数组? [重复]
本文翻译自:How do you check if a variable is an array in JavaScript? [duplicate] This question already ha ...
- javascript字典中添加数组_如何在JavaScript中使用数组方法:Mutator方法
JavaScript中的数组由元素列表组成.JavaScript有许多有用的内置方法来处理数组.修改原始数组的方法称为mutator方法,返回新值或表示的方法称为accessor方法.在本教程中,我们 ...
- JavaScript中一个对象数组按照另一个数组排序
JavaScript中一个对象数组按照另一个数组排序 需求:排序 const arr1 = [33, 11, 55, 22, 66]; const arr2 = [{age: 55}, {age: 2 ...
最新文章
- java接口 密钥签名作用_api接口签名加密请求(二)
- 送你6份最新开源代码!含NLP、ML、计算机视觉方向(附代码论文)
- stm32f103c8t6掉坑记
- apimodel 可以重复吗_【惠蓉保】同时买了“惠蓉保”和百万医疗,可以重复报销吗?“惠蓉保”这么说...
- 神策数据陈宁:前端国际化技术需求及模型实现
- docker $PWD路径_Docker 技术系列之安装Redis单机版和集群版
- Python基础(随笔)
- 程序员的表白文,加点不一样的料!
- [推荐系统]互联网推荐系统比较研究
- 校园网WiFi免认证软件监控
- python mkl 锐龙 cpu_Matlab 升级适配 AMD 锐龙,满血性能轻松提升 60%
- xv6进程切换-swtch函数
- 微信小程序有哪些?401~500
- MySQL触发器怎么写?
- Brat 标注工具 配置文件 详细说明
- 模仿QQ的左右滑动切换界面和下拉更新的效果
- 新形黑猩猩脸部辨识系统 帮助保护朕亨公益组织及时发现网络非法交易
- 免费领取丨精算与金融建模行业解决方案白皮书,不要错过!
- 安全漏洞修复-Common FileUpload-CVE-2016-100031
- Android自动接听实现