首页 > 代码库 > 深入浅出 JavaScript 数组 v0.5

深入浅出 JavaScript 数组 v0.5

本文来自:http://www.cnblogs.com/googny/p/3747832.html

 

 

有一段时间不更新博客了,今天分享给大家的是一篇关于JS数组的,数组其实比较简单,但是用法非常灵活,在工作学习中应该多学,多用,这样才能领会数组的真谛。

以下知识主要参考《JS 精粹》和《JavaScript 高级程序设计》。



 数组是一段线性分配的内存,它通过整数计算偏移并访问其中的元素。JavaScript 没有像此类数组一样的数据结构。

它提供了一些类数组特性的对象,它把数组的下标转变为字符串,用其作为属性。

ECMAScript和其他语言中的数组的区别: 

  • ECMAScript 数组中的每一项可以保存任何类型的数据
  • ECMAScript 数组的大小是可以动态调整的

创建数组的方式:

var arr  = new Array(); 
var arr1  =[]; // 创建两个空数组

一个有趣的属性 length

每个数组都有一个 length 属性。JavaScript 数组的 length 是没有上界的。

length 属性的值是这个数组最大整数属性名加上1.它不一定等于数组里的属性的个数

var arr = [];
arr.length;    // 0

arr[100] = true;
arr.length;    // 101
// arr只包含一个属性

length值不是只读的,可以设定length的值。

设置更大的length不会给数组分配更多的空间。

而把length 设小将导致所有下标大于等于新length 的属性被删除。

删除一个元素

 JavaScript 数组就是对象,可以使用 delete 运算符删除数组中的元素。

delete numbers[2];
// numbers 是 [‘zero‘,‘one‘,undefined,‘three‘]

 

被删除的元素变成undefined。并不会将后面的元素依次前移。

数组的检测

对于一个网页或一个全局作用域而言,使用 instanceof 操作符就能得到满意的结果。

if (value instanceof Array) {
    // do sth with array
}

 

如果实际中有两个全局环境的话,就存在两个不同版本的Array 构造函数,如果你从一个框架向另一个框架传入一个数组,

那么传入的数组与第二个框架中原生创建的数组分别具有各自不同的构造函数。

为了解决这个问题,ECMAScript 5 新增了Array,isArray() 方法。

if (Array.isArray(value)) {
    // do sth with array
}