目录
- 数组也是一个对象(用来存储一些值的)
- 数组使用索引(index)来查找
- 数组的存储性能较好,常用来存储数据
数组中添加元素 修改长度length
var arr = new Array();
console.log(typeof arr);//object
//添加元素
arr[0] = 10;
arr[2] = 33;
console.log(arr);//10,,33
//如果读取不存在的索引不会报错,返回undefined
//获取数组的长度
console.log(arr.length);//3
//对于非连续的数组,获得最大的index+1
//修改length
//如果修改的length小于原长度,多出来的会被删除,
//如果修改的length大于原长度,多出的部分会空出来
/*arr.length = 10;*/
console.log(arr);
//向数组的最后一位添加元素
arr[arr.length] = 10;
arr[arr.length] = 1;
console.log(arr);
使用字面量新建一个数组
数组中的元素可以是任意的数据类型,可以是对象
var arr = new Array();
//使用字面量创建数组
var arr = [];
console.log(typeof arr);//object
//创建时指定元素
var arr1 = [1,3,4,5];
var arr2 = new Array(10,20);
console.log(arr1.length);
console.log(arr2);
//数组中的元素可以是任意的数据类型
arr = [10,"w",1,null,undefined,true];
console.log(arr[3]);
//对象
var obj = {name:"houzi"};
arr[arr.length] = obj;
console.log(arr[6].name);
//函数
arr = [function(){},function(){}];
console.log(arr);
//数组
arr = [[1,23,4],[12,45,6,3]];
console.log(arr[0]);
数组中的常用方法
push向数组末尾添加一个或多个元素,并且返回长度
var arr = ["hozui","name"];
//push
arr.push("wind","end");
console.log(arr);
var result = arr.push("q","q");//返回新的数组的长度
console.log("result = "+result);
pop删除并返回数组的最后一个元素
var a=["a","b","c"];
result = a.pop();
console.log(a);
console.log(result);//返回被删除的元素
unshift()向数组的开头添加一个或多个元素,插入元素后面元素的index会依次调整。
var a=["a","b","c"];
var re = a.unshift("s");
console.log(a);
console.log(re);//4新的数组长度
shift()删除数组的第一个元素。并将被删除的元素作为返回值返回
var a=["a","b","c"];
var re = a.shift("s");
console.log(a);
console.log(re);//a被删除的元素
遍历数组
var a=["a","b","c","d"];
for(var i = 0;i<a.length;i++){
console.log(a[i]);
}
foreach方法 遍历数组(IE8不兼容)
需要一个函数作为参数,回调函数,数组中有几个元素,函数就会执行几次每次执行时候,浏览器会将遍历到的元素以实参对的形式传递进来,我们可以定义形参,读取内容。
浏览器会传入三个参数,
- 正在遍历的元素
- 正在遍历元素的索引index
- 正在遍历的数组
//foreach
var a = ["shouzi","pangzi"];
/*function fun (){
}*/
//浏览器会在回调函数中传入三个参数。
a.forEach(function (value,index,obj){
console.log(index);//这种函数由我们创建不由我们调用---》回调函数。
});
slice()从某个已有的数组汇返回指定的元素
splice()删除元素,并向数组中添加元素
var a=["houzi","lizi","end"];
//不会改变原数组。而是将截取到的元素,封装到新的数组中返回
console.log(a.slice(0,1));//开始的index,结束的index
console.log(a.slice(1));//截取从开始到结束的所有index
//index传递一个负值---从后往前计算
console.log(a.slice(2,-1));
//splice 删除元素,并向数组中添加新元素
//会改变原数组
a.splice(0,2,"新元素");//第三个以及以后的元素,是添加的元素,自动插入开始位置index的前面
console.log(a);
去重数组中重复元素。
var a = [1,2,4,5,6,3,1,1,3,5];
for(var i = 0;i<a.length;i++){
for(var j = i+1;j<a.length;j++){
if(a[i]==a[j]){
a.splice(j,1);//删除了元素以后,后面的元素会自动补上,需要再比较一次。
j--;//比较以后的元素。
}
}
}
console.log(a);
数组的剩余方法
contact连接两个或多个数组,返回新的数组。。不会对原数组产生影响。
var a = ["猴子","儿子",":shs"];
var b = ["杨","后者"];
var c = ["s"];
console.log(a.concat(b));
var result = a.concat(b,c);
console.log(result);//连接多个数组
join()将数组转化为字符串
可以传入一个字符串,字符串将会作为数组中元素的连接符。
var a = ["猴子","儿子",":shs"];
var b = ["杨","后者"];
var c = ["s"];
//传入一个字符串作为参数,作为数组元素中的连接符。
var result = a.join("Hello!");
console.log(typeof result);//String
console.log(result);
reverse()反转字符串-----》(会直接修改原数组)
var a = ["猴子","儿子",":shs"];
var b = ["杨","后者"];
var c = ["s"];
var result = a.reverse();
console.log(result);
sort() 对数组进行排序--》会影响原数组
按照Unicode编码排序,,对数字进行排序的时候也许会得到错误的结果
var a = ["w","r","s",1];
var b = ["a2","a1"];
var c = [5,4,7,44];
var result = a.sort();
var result = b.sort();
//添加一个回调函数
//使用哪个元素调用不缺定,但是肯定a在b的前面。
//返回1交换位置,-1不交换,0
var result2 = c.sort(function(a,b){
/*if(a>b){
return 1;
}else if(a<b){
retunr -1;
}else{
return 0;//根据返回值决定元素位置。
}*/
return a-b;//升序
return b-a;//降序
});
console.log(result2);