▓▓▓▓▓▓ 大致介绍
除了Object之外,Array类型恐怕就是JavaScript种最常用的类型了,JavaScript中的数组与其他语言中的数组有很大的区别,例如,数组的每一项可以存放任何值,并且数组的大小事可以动态调整的
▓▓▓▓▓▓ 创建数组的两种方法
创建数组有两种方法:一是用构造函数,二是用对象字面量的方法
构造函数方式
使用Array构造函数
var colors = new Array();
创建一个含有二十项的数组
var colors = new Array(20);
创建一个包含三项的数组
var colors = new Array("pink","black","white");
对象字面量方式
数组字面量由一对包含数组项的方括号表示
var colors = ["red","blue","green"];
▓▓▓▓▓▓ length属性
JavaScript数组中的length是没有上界的,如果用大于当前length值的数字作为下标来储存值,那么数组就会被扩充来容纳这个元素。
var empty = []; empty.length; //0 empty[100] = 'QQQ'; empty.length; //101 //[]后置下标运算符把它所包含的表达式转换成一个字符串,如果该表达式有toString方法,就使用该方法的值 empty['100']; //QQQ
如果把length设小将导致所有下标大于等于新length的属性被删除
var numbers = [ 'zero','one','two','three','false','12' ]; numbers.length = 2; console.log(numbers); //["zero", "one"]
▓▓▓▓▓▓ in运算符
检查某个键名是否存在的in运算符,也可以适用于数组
var myArray = [1,'2','name','23e']; 0 in myArray //true 2 in myArray //true 4 in myArray //false
注意:如果某个位置的值为0,也会返回false
var a = []; a[100] = 1; a[3] in myArray; //false
▓▓▓▓▓▓ 数组的遍历
数组的遍历通常是用for或者while循环,并不推荐for..in循环
var a = [1, 2, 3]; // for循环 for(var i = 0; i < a.length; i++) { console.log(a[i]); } // while循环 var i = 0; while (i < a.length) { console.log(a[i]); i++; } var l = a.length; while (l--) { console.log(a[l]); }
还有一种遍历方法就是使用forEach(),在后面会讲到
▓▓▓▓▓▓ 数组的空位
当数组的两个逗号之间没有任何值,那么这个数组就有空位
数组的空位是不会影响length属性,并且访问空位会返回undefined,使用delete删除数组元素,会返回空值
var myArray = [1,'2',,,]; console.log(myArray.length); //4 console.log(myArray[3]); //undefined
数组的某个位置是空位,与某个位置是undefined
,是不一样的。如果是空位,使用数组的forEach
方法、for...in
结构、以及Object.keys
方法进行遍历,空位都会被跳过
var a = [, , ,]; a.forEach(function (x, i) { console.log(i + '. ' + x); }) // 不产生任何输出 for (var i in a) { console.log(i); } // 不产生任何输出 Object.keys(a) // []
如果某个位置是undefined
,遍历的时候就不会被跳过。
▓▓▓▓▓▓ 数组方法
我的这这篇博客详细的写了有关数组的方法,这里就不在重复http://www.cnblogs.com/qqandfqr/p/5558199.html
参考资料:
阮一峰JavaScript标准参考教程(alpha)-语法-数组
JavaScript语言精粹第六章
JavaScript高级程序设计(第三版)第五章 Array类型