在之前的一篇博客中提到了一些 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中的数组操作相关推荐

  1. 遍历JavaScript中的数组

    在Java中,可以使用for循环遍历数组中的对象,如下所示: String[] myStringArray = {"Hello", "World"}; for ...

  2. JavaScript中的数组和字符串

    知识内容: 1.JavaScript中的数组 2.JavaScript中的字符串 一.JavaScript中的数组 1.JavaScript中的数组是什么 数组指的是数据的有序列表,每种语言基本上都有 ...

  3. JavaScript中的数组创建

    JavaScript中的数组创建 本文转载自:众成翻译 译者:loveky 链接:http://www.zcfy.cc/article/713 原文:http://rainsoft.io/power- ...

  4. JavaScript中的骚操作

    JavaScript中的骚操作--记录自用 JavaScript中的骚操作 数组去重 数组转化为对象(Array to Object) 活用三元表达式 转换为数字类型(Convert to Numbe ...

  5. JavaScript中遍历数组的方法

    目录 JavaScript中遍历数组的方法 1.for 循环遍历 2.forEach 遍历 3.map 遍历 4.for...of 遍历 5.filter 遍历 6.some 遍历 7.keys,va ...

  6. 如何在JavaScript中比较数组?

    本文翻译自:How to compare arrays in JavaScript? I'd like to compare two arrays... ideally, efficiently. 我 ...

  7. 如何检查变量是否是JavaScript中的数组? [重复]

    本文翻译自:How do you check if a variable is an array in JavaScript? [duplicate] This question already ha ...

  8. javascript字典中添加数组_如何在JavaScript中使用数组方法:Mutator方法

    JavaScript中的数组由元素列表组成.JavaScript有许多有用的内置方法来处理数组.修改原始数组的方法称为mutator方法,返回新值或表示的方法称为accessor方法.在本教程中,我们 ...

  9. JavaScript中一个对象数组按照另一个数组排序

    JavaScript中一个对象数组按照另一个数组排序 需求:排序 const arr1 = [33, 11, 55, 22, 66]; const arr2 = [{age: 55}, {age: 2 ...

最新文章

  1. java接口 密钥签名作用_api接口签名加密请求(二)
  2. 送你6份最新开源代码!含NLP、ML、计算机视觉方向(附代码论文)
  3. stm32f103c8t6掉坑记
  4. apimodel 可以重复吗_【惠蓉保】同时买了“惠蓉保”和百万医疗,可以重复报销吗?“惠蓉保”这么说...
  5. 神策数据陈宁:前端国际化技术需求及模型实现
  6. docker $PWD路径_Docker 技术系列之安装Redis单机版和集群版
  7. Python基础(随笔)
  8. 程序员的表白文,加点不一样的料!
  9. [推荐系统]互联网推荐系统比较研究
  10. 校园网WiFi免认证软件监控
  11. python mkl 锐龙 cpu_Matlab 升级适配 AMD 锐龙,满血性能轻松提升 60%
  12. xv6进程切换-swtch函数
  13. 微信小程序有哪些?401~500
  14. MySQL触发器怎么写?
  15. Brat 标注工具 配置文件 详细说明
  16. 模仿QQ的左右滑动切换界面和下拉更新的效果
  17. 新形黑猩猩脸部辨识系统 帮助保护朕亨公益组织及时发现网络非法交易
  18. 免费领取丨精算与金融建模行业解决方案白皮书,不要错过!
  19. 安全漏洞修复-Common FileUpload-CVE-2016-100031
  20. Android自动接听实现

热门文章

  1. ^_^ 真是Android Framework的BUG
  2. 母亲,我怎么让妳等了那么久...
  3. NA-NP-IE系列实验之前三个实验小结
  4. 在MasterPage下FindControl的使用方法
  5. 大二菜鸟———无重复字符的最长子串
  6. window上创建python3虚拟环境
  7. Struts2 分割字符串标签s:generator
  8. [转]PHP用mysql数据库存储session
  9. 数学分析原理 定理 6.4
  10. 超简单破解网页加密源代码