JavaScript中的数组操作
2015-07-16 13:30
585 查看
在之前的一篇博客中提到了一些 JavaScript Array 对象的方法,比如 slice()、splice()、pop()、push() 等,博客链接:http://xitongjiagoushi.blog.51cto.com/9975742/1653063JavaScript 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(); //第二种方法简洁有效的完成任务,妈妈再也不用担心我的键盘会敲坏了。
完。
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 异步流程控制:7 行代码学会 co 模块
- JavaScript拆分字符串时产生空字符的原因
- IE8开发人员工具教程(二)
- 在flex中执行一个javascript方法的简单方式
- Flex结合JavaScript读取本地路径的方法
- PowerShell中执行Javascript的方法示例
- javascript asp教程第六课-- response方法
- javascript asp教程More About Recordsets
- javascript asp教程第十二课---session对象
- javascript asp教程创建数据库连接
- javascript asp教程错误处理
- javascript asp教程第十课--global asa