**JavaScript的数组对象
数组:字面意思,数据的组合。
数组对象:使用单独的变量名储存一系列的值,一个容器储存多个元素。
数组项:元素。
typeof返回object,和object类似,但是他的存储效率比普通对象要高。
使用单独的变量名储存一系列的值,一个容器储存多个元素。
//单独的值
var aNames=["彭于晏","陈冠希","吴彦祖","小曹"];
//不同的对象
var aShuai=[{
name:"彭于晏",
prop:"长得帅",
},{
name:"陈冠希",
prop:"长得帅",
},{
name:"吴彦祖",
prop:"长得帅",
},{
name:"小曹",
prop:"长得帅",
}
]
**JavaScript数组的创建
1、通过字面量创建 [ ]
var arr=[1,2,3,4,5,6,7];
console.log(arr); //Array(7)
2、构造函数 new关键字 常规方式
var arr2=new Array();
//添加数组项/元素
arr2[0]="A";
arr2[1]="B";
arr2[2]="C";
console.log(arr2); //(3)['A','B','c']
//简写方式
var arr3=new Array("彭于晏","吴彦祖","陈冠希","小曹");
console.log(arr3);
注意:数组项为数字,且只有一个数组项时,会出现下面这种情况。
var arr4=new Array(10);
console.log(arr4); //(10)[empty x 10]
**JavaScript数组的访问
1、通过索引进行访问 索引:由0开始的整数,所有的数组都有索引
var arr3=new Array("彭于晏","吴彦祖","陈冠希","小曹");
console.log(arr3[0]);
console.log(arr3[1]);
console.log(arr3[2]);
console.log(arr3[3]);
for循环,遍历数组的项。
var arr3=new Array("彭于晏","吴彦祖","陈冠希","小曹");
for(var i=0,i<5,i++){
console.log(arr3[i]);
}
2、通过索引添加数组项
var arr3=new Array("彭于晏","吴彦祖","陈冠希","小曹");
arr3[4]="周星驰";
console.log(arr3); //(5)['彭于晏','吴彦祖','陈冠希','小曹','周星驰']
arr3[0]="成龙";
console.log(arr3); //(5)['成龙','吴彦祖','陈冠希','小曹','周星驰']
arr3[8]="周杰伦";
console.log(arr3); //(5)['成龙','吴彦祖','陈冠希','小曹','周星驰',empty x 2,'周杰伦']
console.log(arr3[7]); //undefined
**JavaScript数组对象的属性
- length:设置或返回数组元素的个数。获取的值比数组最大索引+1
var arr=new Array("彭于晏","吴彦祖","陈冠希","小曹");
var arr2=["彭于晏","吴彦祖","陈冠希","小曹","周星驰"];
arr.length=10;
//若长度超过了原有数组的长度,则超出的部分为undefined
console.log(arr); //(10)['彭于晏','吴彦祖','陈冠希','小曹','周星驰',empty x 6]
arr.length=3;
console.log(arr); //(3)['彭于晏','吴彦祖','陈冠希']
//若长度小于原数组的长度,删除超出部分的元素
可在for循环中使得声明的对象长度与数组的length进行比较。
- constructor:返回创建数组对象的原型函数。
console.log(arr.constructor); //f Array() {[native code]}
通过哪个函数构造传来的,返回哪个函数。
- prototyte:允许数组对象添加属性或方法。
Array.proptype.name="周星驰";
var arrx=new Array();
console.log(arrx.name); //周星驰
**JavaScript数组对象的方法
(1)concat()连接两个或多个数组,并返回结果,原数组不变。
var arr1=[1,2,3];
var arr2=[4,5,6];
var arr3=["A","B","C","D","E","F","G"];
console.log(arr1.concat(arr2));//(7) [1, 2, 3, 4, 5, 6]
console.log(arr1.concat(arr2,arr3));
(2)pop()删除数组最后一个元素,并且返回删除的元素,改变原数组。
console.log(arr1.pop());//3
console.log(arr1);//1,2
(3)push()向数组末尾添加一个或多个元素,并返回新的长度,改变原数组。
console.log(arr1.push(8,9));//5 新数组的长度
console.log(arr1);//1,2,3,8,9
(4)shift()删除并返回第一个元素,改变原数组。
console.log(arr1.shift());//1
(5)unshift()向数组开头添加一个或多个元素,并且返回长度,改变原数组。
console.log(arr1.unshift(0,1,2,3));//7
(6)slice(开始索引,结束索引)选取数组的一部分,并返回新的数组
var arr2=[1,2,3,4,5,'A','B','C'];
console.log(arr2.slice(0,3));//1,2,3 留头不留尾
console.log(arr2);//原数组不变
(7)splice(开始索引,截取长度,添加元素)从数组中添加或者删除元素,改变原数组。
console.log(arr2.splice(1,4));//2,3,4,5
console.log(arr2.splice(1,3,'D','E','F'));//1,D,E,F,A,B,C
(8)indexof()搜索数组中的元素,并返回其所在的位置,如果找不到被检索元素,返回-1
var arr3=[1,2,3,4,'A','B','C',2,3,4]
console.log(arr3.indexOf('B'));//5
//若元素重复出现,则返回第一次出现的位置。
console.log(arr3.indexOf('E'));//-1
(9)lastIndexOf()搜索数组中的元素,并返回元素最后所在的位置,如果找不到被检索元素,返回-1
console.log(arr3.lastIndexOf(2));//7
(10)join将数组的所有元素放入一个字符串。数组转换位置字符串。不改变原数组。
console.log(arr3.join());
(11)split()将字符串转化为数组
console.log(arr3.split());//[1, 2, 3, 4, 'A', 'B', 'C', 2, 3, 4]
var str="hello"
console.log(str.split(""));//['h','e','l','l','o']
(12)reserse()=反转数组元素的数据,改变原数组。
console.log(arr3.reverse());//[4, 3, 2, 'C', 'B', 'A', 4, 3, 2, 1]
console.log(arr3);//[4, 3, 2, 'C', 'B', 'A', 4, 3, 2, 1] 改变原数组