数组
js的对象有:
内建对象
宿主对象
自定义对象
数组Array
数组也是对象,是常用的内置对象,与普通对象功能相似,也是用来存储一些值的,不同的是普通对象是使用字符串作为属性名的,而数组使用数字来作为索引操作元素
索引是从0开始的整数
数组的存储性能比普通对象要好,在开发中我们经常使用数组来存储一些数据
var obj=new Object();
obj.name="sunwukong";
普通对象是一个属性名对应一个属性值
这是普通对象,他是用的属性名而数组用的是索引
一个 索引对应一个值,一个索引加上一个值 = 一个元素
创建数组 var 数组名 = new Arrary()
//创建数组对象
var arr=new Array();//arr就是数组对象
//可以查看是不是数组
console.log(arr);//"" 因为没有添加元素所以显示的是一个空数组里面什么也没有
//console.log(typeof arr);看它的类型"object"
向数组添加元素 数组[索引]=值
语法:数组[索引]=值
var arr=new Array();
arr[0]=10;
arr[1]=33;
arr[2]=22;
console.log(arr);//"10,33,22"
读取数组中元素 数组[索引]
语法:数组[索引]
var arr=new Array();
arr[0]=10;
arr[1]=33;
arr[2]=22;
console.log(arr); //10,33,22
console.log(arr[0]);//10
//没有arr3却要输出arr3
//console.log(arr[3]);输出undefined
如果读取不存在的索引,他不会报错而是返回undefined
获取数组长度 数组.length
使用length属性来获取数组的长度(元素个数)
语法:数组.length
console.log(arr.length);//3
对于非连续的数组,使用length会获取到数组的最大索引+1
var arr=new Array();
arr[0]=10;
arr[1]=33;
arr[2]=22;
arr[3]=44;
arr[10]=31;
console.log(arr.length);//"11"
这里虽然显示有11个元素但是实际上只有5个元素
再比如:
var arr=new Array();
arr[0]=10;
arr[1]=33;
arr[2]=22;
arr[3]=44;
arr[10]=31;
arr[100]=90;
console.log(arr.length);//"101"
最大索引
console.log(arr);
把没有创建索引的给空出来,空出来就会占用位置
所以尽量不要创建非连续的数组
修改length
如果修改的length大于原长度,则多出部分会空出来
var arr=new Array();
arr[0]=10;
arr[1]=33;
arr[2]=22;
arr[3]=44;
arr[10]=31;
arr[100]=90;
arr.length=4;
console.log(arr.length);//10,33,22,44
arr.length=3;
console.log(arr.length);//10,33,22
arr.length=2;
console.log(arr.length);//10,33
如果修改的length大于原长度,则多出来部分会空出来
var a=new Array();
a[0]="红色";
a[1]="绿色";
a[2]="蓝色";
a.length=5; //多出来部分会空出来
alert(a.length);
如果修改的length小于原长度,则多出的元素会被删除
数组的最后一个位置添加元素
数组名[数组名.length]="值";
//向数组的最后一个位置添加元素
var a=new Array();
a[0]="红色";
a[1]="绿色";
a[2]="蓝色";
a[a.length]="黄色";
alert(a);
再加一个元素
var a=new Array();
a[0]="红色";
a[1]="绿色";
a[2]="蓝色";
a[a.length]="黄色";
a[a.length]="白色";
alert(a);