1.数组Array简介
数组也是一个对象,不同的是普通对象通过属性名来访问使用属性值,而数组通过索引来操作元素
- 创建一个数组
var arr=new Array(); //通过构造函数创建数组对象
arr[0]=10; //向数组内部添加元素
arr[1]=20;
conole.log(arr[1]); //读取数组内的元素
console.log(arr[3]) //读取数组内不存在的元素,不会报错,会返回undefined
-
设置并返回数组的长度属性length
lenght属性会获取到数组最大索引+1,也就是数组最后元素的后一个位置
语法 数组.length
-
修改length
如果修改的length大于原长度,多出来的部分会占用内存,但是没有值
如果修改的length小于原长度,则多出来的部分会被删除
-
向数组的最后一个位置添加元素
arr[arr.length]=100;
2.使用字面量创建数组
- 数组也是一个对象,对象能用字面量创建,所以数组也能用字面量创建,使用字面量创建数组时,可以同时指定数组中的元素
语法:[ ]
var arr=[1,2,3,4,5]
- 使用构造函数创建参数时,可以同时添加元素,将要添加元素的值做为构造函数的参数传递
var arr=new Array(1,2,3,4,5)
- 创建只有一个元素的数组
var arr=[10] //只有一个元素10
var arr=new Array( 10 ) //这个会创建一个长度为10的数组 ,不常使用,因为js中数组中可以随便加元素,没有长度的限制,加的元素索引超过了长度,长度会自动变化
- 数组元素可以是任何类型的值,包括 Null,Undefined,String ,Number,Bool,和对象和函数和数组
- 二维数组 arr[ [1,2,3],[3,4,5],[5,6,7] ];
3.数组的方法
1.创建元素的方法
- push( ) 向数组末尾添加一个或多个元素,并将新数组的长度作为返回值返回
- unshift( )向数组开头插入一个或多个元素,并返回新数组的长度
2.删除元素的方法
- pop( )删除数组的最后一个元素,并将被删除的元素作为返回值返回
- shift( )删除并返回数组的第一个元素
3.遍历数组的方法
for循环
for( var i=0;i<arr.length;i++)
arr[i];
forEach方法
forEach( )方法需要一个函数作为参数,这种函数由我们自己创建但不由我们调用,**我们称为回调函数**,此处函数由浏览器调用
数组中有几个元素,函数就会执行几次,每次执行时,**浏览器会将当前遍历到的元素以实参的形式传递给回调函数的形参**,我们可以来定义形参获取这些内容
- 浏览器会给回调函数传递三个参数
第一个:就是当前正在遍历的元素
第二个:就是当前正在遍历的元素的下标
第三个:就是被遍历的一整个数组
arr.forEach(function(element,index,object ){
console.log(element);
});
4.slice()截取和splice( )方法
slice方法(start,end )从数组中提取指定元素,该方法不会改变原数组的元素,而是将截取到的元素放入新数组返回
参数:start: 表示截取开始位置的下标,包含开始元素
end表示截取结束位置的下标,不包含结束元素
第二个end参数可以不写,就表示会截取从开始位置之后的所有的元素
参数也可以是一个负值,比如-1表示倒数第一个元素 ,-2表示倒数第二个元素
- splice方法(start,length)用于删除数组的指定元素,并创建新的元素,该方法会影响原数组
参数:
start :表示要删除开始位置的下标
length:表示要删除元素的个数
第二个参数之后,可以传递一些新元素,这些元素会自动插入到开始位置索引之前的位置
splice总结:
splice( )方法可以用于删除元素
splice( )方法可以用于替换元素 //加上第三个参数即可
splice( )方法可以用于创建元素//第二个参数length长度设置为0即可
5.补充方法
concat( )方法可以连接两个或多个数组,该方法不会影响原来的数组,会将新数组作为返回值返回
arr.concat(arr1,arr2,“牛魔王”,“铁扇公主”),该方法不仅可以连接数组,还可以连接数组和字符串
join() 可以将一个数组转换为一个字符串,该方法不会对原数组产生影响
参数:
需要一个字符串作为参数,这个字符串将会作为连接符来连接数组中的元素
如果不指定连接符则默认使用逗号
可以指定一个空串作为连接符
var arr=[1,2,3]
var result=arr.join(“+”);
result=“1+2+3”;
sort()
- 可以对一个数组中的内容进行排序,默认是按照Unicode编码进行排序,所以我们对数字进行排序时会得到意向不到的效果,sort会影响原来的数组
调用以后,会直接修改原数组。
- 可以自己指定排序的规则,需要一个回调函数作为参数:
function(a,b){
//升序排列
//return a-b;
//降序排列
return b-a;
}