数组

数组是值的 有序集合。

js中数组是无类型的。

js中数组的索引是基于零的32位数值,最大能容纳 2^32-1 个元素。

js中数组是动态的,不需手动分配空间。

js中数组可能是稀疏的:数组元素的索引不一定要连续,之间可以有空缺。

数组继承自 Array.prototype ,是js对象的特殊形式( {'0':0}  &&   [0] ).

数组的实现经过优化,用数组索引访问数组元素比对象访问属性快。

数组直接量中的值可以是任意表达式。

直接量语法允许可选的结尾的逗号。 [,].length   1    [,,].length  2    [,,,3].length   4

 

构造函数创建数组三种形式:

new Array()      []

new Array(10)   [empty × 10]

new Array(10,20)    [10, 20]

 

[1,2][1.00]    2  

[1,2]['1.00']     undefined     数组回归对象本性

 

稀疏数组 索引处值为 undefined \empty 区别:

0 in [,,,]  false    

0 in [undefined,undefined,,]    true

0 in new Array(3)   false

 

var a=[1,2,3]

a.length=2     [1, 2]    // 截断

a.length=5    [1, 2, empty × 3]    // 扩展原有长度   不存在元素为空

es5 提供设置属性为只读   var a=[1,2,3]

Object.defineProperty(a,'length',{'writable':false});

a.length=0   

a     [1, 2, 3]

 

delete   不改变数组长度    (delete数组元素后,变为稀疏数组)

var  a=[1,2,3]   

delete a[1]  // true

a     // [1, empty, 3]

1 in a    // false

 

push  pop   数组尾部增减

unshift  shift   数组首部增减

splice  插入、删除、替换数组元素

 

for in 与常规 for循环相比,推荐使用常规 for 循环

for  in  能枚举继承的属性名  for(var i in a){ if( !a.hasOwnProperty(i) )  continue;  //code body }   //筛选

for  in  循环不一定按顺序执行(可能是按照创建顺序执行)

es5     forEach             [1,2].forEach(function(x){ // code  });

 

posted @ 2018-10-29 12:54  justSmile2  阅读(113)  评论(0编辑  收藏  举报