一维数组
内存中的数组:
1.引用类型的对象
2.每个值相当于一个元素
3.每个都有一个下标数组对象的个数:
1.数组是从0开始计数的,即arr[0]是arr数组中的第一个元素。
2.arr.length,永远等于最大一个下标+1使用数组中的元素:
数组名[i];
创建
1.创建空数组
var 数组名 =[];//js中见到[]就是数组
var arr = [];
2.创建数组的同时,初始化每个元素
var 数组名 = [值1,值2,值3,…];
var arr = [1,2,3,4];
3. 通过创建新对象,创建空数组
var 数组名 = new Array(n);
var arr = new Array(n);
new:创建一个新对象
Array:数组类型
n:表示初始化元素的个数,省略则创建控数组
4.通过创建新对象,创建数组的同时,初始化每个对象
var 数组名 = new Array(值1,值2,值3,…);
var arr = new Array("hello","world");
赋值
数组名[i] = 值;
arr[1] = 2;
1.不限制个数,js中没有数组越界的说法;如果赋值多,自动增加length.
2.不限制元素的类型。
取值
var arr = [1,2,3,4];
console.log(arr[1]+arr[3]);//6
任何位置使用 数组名[i] ,等效于直接使用 数组名[i] 中的值。
注: 如果给数组中的元素赋值为null,主动释放一个对象。
arr[2] = null;
null:主动释放一个对象,虽然在js中有垃圾回收器,但是建议用完较打的对象后,主动释放。
遍历一维数组
//arr是一个一维数组
for(var i=0;i<arr.length;i++){
//进行操作的代码
}
二维数组
数组的元素有引用了另一个子数组。
创建(两步)
(1)创建一个空数组
(2)设置数组中每个元素再引用另一个子数组。
var data = [];
data[0] = [1,2,3,4];
访问
访问二维数组中的任意位置元素
data[r][c];
/*data表示一个二维数组,r表示行,c表示列;即取data数组中r行c列的元素。*/
遍历二维数组
//data是一个二维数组
for(var r=0;r<data.length;r++){
for(var c=0;c<data.length;c++){
//进行操作的代码
//当前元素:data[r][c];
}
}
关联(hash)数组
可自定义下标的数组。
创建
(1)先创建空数组,
(2)再向数组中添加元素。
var arr = [];
arr[key] = value;
key:必须是字符串;
hash数组的length属性无效,即无法使用arr.length来获取数组的长度。
使用
arr[key];
- 关联数组中的key不能重复。
- 所有数组如果访问不存在下标的位置,不会报错,会返回undefined.
- 关联数组的有点:快速精确查找;不需要遍历;和数据量无关。
遍历hash数组
for(var key in hashArr){//反复取出每个元素放入变量key中
//执行操作的代码
//key中获取的仅是元素的下标名称
//当前元素:hashArr[key];
}
建议:
1.只要遍历索引数组(一维/二维数组都属于索引数组),就用for循环;
2.只要遍历关联(hash)数组,只能用for in循环。