js深入浅出 数组(一)

来源:互联网 发布:type c数据线线序 编辑:程序博客网 时间:2024/05/19 12:23

数组是值得有序集合。每个值叫做元素,每个元素在数组中都有数字位置编号,也就是索引。js中的数组是弱类型的,数组中可以含有不同类型的元素。数组元素甚至可以是对象或其他数组。

var arr = [1,true,null,undefined,{x:1},[1,2,3]];

arr[4].x       //返回1

arr[5][1];    //返回2

arr.length;获取数组长度

delete arr[0]//只是吧第一个元素改成了undefined,长度依然是原来的长度

创建数组-字面量

创建数组-new Array



for in 的方式遍历数组,数组也是对象,有原型arr.prototype,给arr.prototype增加一个属性x,在for in时X也会出现,吧原型链上的属性过滤掉,用到了hasOwnProperty;


for in 是不保存顺序的。

二维数组:


稀疏数组:


数组方法:







Array.prototype.forEach数组遍历

Array.prototype.map数组映射




Array.prototype.index & lastIndexOf 数组检索,元素在数组中的位置

Array.isArray判断是否是数组

其他方法:

[] instanceof Array;

({}).toString.apply([]) === '[object Array]';

[].contructor === Array;//true


总结:

数组 vs 一般对象

相同:都可以继承,数组是对象,对象不一定是数组,都可以当做对象添加删除属性。

不同:数组自动更新length,按索引访问数组常常比访问一般对象属性明显迅速。数组对象继承Array.prototype上的大量数组操作方法。

字符串和数组

var str = "hello world";

str.charAt(0);//"h"

str[1];//e

Array.prototype.join.call(str,"_");//"h_e_l_l_o__w_w_r_l_d"