1.js是一门面向对象的语言。

2.创建一个数组:
(1)构造函数创建:
var arr = new Array(10,20,30);
(2)使用字面量创建:
var arr = [10,20,30];
注意:当创建只有一个元素的数组时,var arr = [10]表示数组中只有一个元素;var arr = new Array(10)表示数组的长度为10.
3.如果读取不存在的对象,不会报错,返回undefined。
4.获取数组长度:数组.length,对于非连续的数组,会返回最大索引+1.
5.length也能设置数组长度,如果修改的length大于原长度,用空格表示多出的,小于则删除多余的元素。
6.向数组最后添加一个元素,arr[arr.length] = a;
7.数组中的元素可以是任何数据类型,也可以是对象、函数、数组
8.数组的四个方法:
  (1) push()向数组末尾添加一个或多个元素,并将新数组长度返回。
  (2) pop()删除数组最后一个元素。并将被删除元素作为返回值返回。
  (3) unshift()向数组开头添加一个或多个元素,并将新数组长度返回。
  (4) shift()删除数组第一个元素。并将被删除元素作为返回值返回。
9.数组的遍历:将数组中的每一个元素都取出来
for(var i = 0;i <= arr.length;i++){
    console.log(arr[i]);
}
10.forEach()用来遍历数组(注:只支持ie9以上的浏览器),传递的参数必须是一个函数
arr.forEach(function(value,index,obj){
    //数组中有几个元素就执行几次
    //value当前正在遍历的对象;index当前正在遍历的元素的索引;obj正在遍历的数组对象
})
例:输出值为[{a:1,b:0},{b:1}]
var arr = [{a:1},{}];
arr.forEach(function(item,idx){
    item.b = idx;
});
console.log(arr);
11.数组方法:
(1)slice()用来从数组中提取出指定元素:
arr.slice(start,end);
//start截取开始位置(包含开始索引),end截取结束位置(不包含结束索引),且不会改变原数组
//第二个参数可以不写,此时截取开始位置往后所有元素
//参数可以为负数,-1表示倒数第一个。

(2)splice()删除数组中的指定元素,将删除的元素返回,并向删除位置插入新元素,如果 i=0,表示向开始位置后插入元素:
arr.splice(start,i,新插入的元素);
//start开始位置索引,i表示删除的数量
练,去重练习:
			var arr = [1,2,3,2,4,5,2,1,3,4,2,1];
			/* 遍历数组 */
			for(var i=0;i<arr.length;i++){
				/* 获取当前元素后的所有元素 */
				for(var j = i+1;j<arr.length;j++){
					//判断两个值是否相等
					if(arr[i] == arr[j]){
						//相等则删除j对应的元素
						arr.splice(j,1);
                                                //删除后后面的元素位置会提前
                                                j--;
					}
				}
			}
			console.log(arr);
12.concat(),将两个或多个数组连接在一起,将新数组返回,对原数组不影响
13.join(连接符),将数组转换为一个字符串,并返回,对原数组不影响。参数即为字符串之间的连接符,默认“    ,    ”。
14.reverse(),反转数组,对数组本身有影响。
15.sort(),对数组元素进行排序,默认按照Unicode编码排序,对数组本身有影响。
例:使用回调函数控制排序规则。返回值大于0,交换位置,返回值小于0,位置不变,等于0,也不变。
arr.sort(function(a,b){
	/*if(a>b){
		return 1;//交换位置
	}else if(a<b){
		return -1;//位置不变
	}else{
		return 0;
	}*/
        //升序排列
        return a-b;
        //降序
        return b-a;
});