数组存储数据时,存储的数据是有序的,在取数据时,只能循环找到对应的值,通过索引值获取对应的数据
数组的定义
<1> var arr=[1,2,3,4];//直接赋值
<2> var arr=new Array();//通过包装对象创建数组
arr[0]=1;//第一个值赋值为1
arr[5]=2;//第六个值赋值为2
则数组的长度为6
<3> var arr=new Array(10);
当传入的参数只有一个,且参数为数字时,定义的是数组的长度
数组的属性
<1> length:
表示数组的长度,数组的长度可以设置,也可以获取
<2> constructor:
返回的是数组的构造函数
<3> prototype:
这个属性是包含在Array这个包装类型上边的,书写方式:Array.prototype
数组的方法
push()方法: 向数组末尾添加元素,返回值为数组的长度,改变原数组
var arr = [ 1, 2 ,3 ];
console .log(arr.push("a" , "b"));//返回值为5
console .log(arr);//arr=[1,2,3,"a","b"]
pop(): 删除数组的最后一个元素,返回值为被删除的元素,改变原数组
var arr = [ 1, 2 ,3 ];
console .log(arr.pop());
console .log(arr);
shift():删除数组的第一个元素,返回值为被删除的元素,改变原数组
var arr = [ 1, 2 ,3 ];
console .log(arr.shift());//1--返回被删除的元素
console .log(arr);//arr = [2,3]--改变原数组
unshift():向数组头部添加元素,返回值为数组的长度,改变原数组
var arr = [ 1, 2 ,3 ];
console .log(arr.unshift("a" , "b"));//5
console .log(arr);//arr = ["a","b",1,2,3]
slice(start,end):截取数组元素,从start开始,到end结束,不包括end
var arr = [ 1, 2 ,3 , 4, 5 ,6 ];
console .log(arr.slice(2 , 4));//[3,4]
console.log(arr);//arr = [1,2,5,6]
var arr = [ 1, 2 ,3 , 4, 5 ,6 ];
console .log(arr.slice(4 , 2));//[]当第二个参数小于第一个参数时,操作无效
console .log(arr);//arr = [1,2,3,4,5,6]
splice(index,要删除的元素个数,要添加的元素):可以删除、替换、添加数组中元素,改变原数组
var arr = [ 1, 2 ,3 , 4, 5 ,6 ];
console .log(arr.splice(2 , 4)); //第一个参数表示开始截取的位置,第二个参数表示删除的个数
console .log(arr);
var arr = [ 1, 2 ,3 , 4, 5 ,6 ];
console .log(arr.splice(7 , 2)); //当传入的索引值不在数组长度范围之内时,返回空数组
console .log(arr);
var arr = [ 1, 2 ,3 , 4, 5 ,6 ];
console .log(arr.splice(3 , 0, "a" ,"b" )) //第一个参数表示开始查找的索引值,第一个参数表示删除的个数,第三个之后都是要插入的元素
console .log(arr);
var arr = [ 1, 2 ,3 , 4, 5 ,6 ];
console .log(arr.splice(3 )); //传入一个参数时,表示从头开始删除,表示删除的个数
reverse():反转数组,改变的是原数组
var arr = [ 1, 2 ,3 , 4, 5 ,6 ];
console .log(arr.reverse());//arr = [6,5,4,3,2,1]
concat():连接两个数组,返回值为一个新的数组,不会改变原数组的值
var arr = [ 1, 2 ,3 , 4, 5 ,6 ];
var arr1 = [ "a", "b" ,"c" ];
console .log(arr.concat(arr1));//[1,2,3,4,5,6,"a","b","c"]
console .log(arr1.concat(arr));//["a","b","c",1,2,3,4,5,6]
sort():对数组元素进行排序,默认排序是按照ASCII码值排序
var arr = [ 10, 2 ,22 , 3, 6 ,4 ];
console .log(arr.sort());
console .log(arr.sort( function( a , b){//小-->大
return a - b;
}));
console .log(arr.sort( function( a , b){//大-->小
return b - a;
}))
console .log(arr.sort( function(){
return Math.random() - 0.5 ;
}))
join():将数组使用指定字符拼接成字符串
var arr = [ 10, 2 ,22 , 3, 6 ,4 ];
console .log(arr.join("." ));//10.2.22.3.6.4
数组去重
var arr=[];
for(var i=0;i<arr.length;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[i] == arr[j]){
arr.splice(j,1);//如果两个值相等,则删除第j个,只删除一个,删除数据之后,数组的长度会发生变化,所以要即时改变数组的i值
j--;
}
}
}