一、特点
- 数据类型的多变;
- 数组大小可动态调整;
- 有length属性,且length属性不是只读的,可以设置;
二、创建方法
- 使用Array构造函数;
var arr=new Array(); var arr=new Array(20); var arr=new Array("arr1","arr2","arr3");
- 数组字面量表示法;
var arr=["arr1","arr2","arr3"]; var arr=[];
三、检测数组
value instanceof Array;
Array.isArray(value);//value 为数组
四、转换方法
toString(),toLocaleString()返回的都是字符串,并以,分隔。
join()——返回的也是字符串,以join函数内部的参数分隔,对原数组没有影响。
valueOf()——返回的是数组,可以通过这种方式将一个数组赋给另一个数组若对这个数组操作会对原数组有一样的操作。
若某一项为null或者为undefined时,那么在join(),toLocaleString(),toString()中以空字符串表示。
var arr=["arr1","arr2","arr3"];
console.log(arr.toString());//arr1,arr2,arr3
console.log(arr.toLocaleString());//arr1,arr2,arr3
console.log(arr.valueOf());//["arr1", "arr2", "arr3"],可以通过这种方式将一个数组赋值给另一个数组,若对这个数组操作,会对原数组有一样的操作。
console.log(arr);//["arr1", "arr2", "arr3"]
console.log(arr.join("||"));//arr1||arr2||arr3 返回字符串,对原数组没有改变
//若某一项为null或者为undefined时,那么在join(),toLocaleString(),toString()中以空字符串表示
五、栈方法
push()——返回修改后数组长度。
pop()——返回取出的元素,从arr[arr.length-1]开始取。
var arr=["arr1"];
var count=arr.push("arr2","arr3");//返回修改后数组长度
console.log(count);//3
console.log(arr);//["arr1","arr2","arr3"]
var theTop=arr.pop();//返回取出的元素,从arr[arr.length-1]开始取
console.log(theTop);//arr3字符串
console.log(arr);//["arr1","arr2"]
六、 队列方法
shift()——返回取出的元素,从arr[0]开始取。
unshift()——在前面增加,增加arr[0],返回修改后的长度。
var arr=[]; var count=arr.push("arr1","arr2");//返回修改后数组长度 console.log(count);//2 console.log(arr);//["arr1","arr2"] var theBottom=arr.shift();//返回取出的元素,从arr[0]开始取 console.log(theBottom);//arr1字符串 console.log(arr);//["arr2"] var count=arr.unshift("arr1","arr0");//在前面增加,增加arr[0] console.log(count);//3,返回修改后的长度 console.log(arr);//["arr1", "arr0", "arr2"]
七、重排序方法
reverse()——逆向输出,改变原数组。sort()——升序排序,比较的是字符串,要解决这个问题,只需要在sort中传入一个函数就可以。
函数为
arr.sort(function(a,b){ return b-a});//b-a从大到小,a-b从小到大
//reverse逆向输出
var arr=[0,1,5,10,15];
arr.reverse();//逆向输出
console.log(arr);//[15, 10, 5, 1, 0]
//sort升序排序
arr.sort();//升序排序,比较的是字符串
console.log(arr);//[0, 1, 10, 15, 5]
//sort解决方案
arr.sort(function(a,b){
return b-a});//b-a从大到小,a-b从小到大
console.log(arr);//[15, 10, 5, 1, 0]
八、操作方法
concat()——连接,不影响原数组。
slice()——复制新数组,不影响原数组。
splice()——删除,在原数组上操作,返回删除项组成的数组。
//concat连接
var arr=["arr1","arr2"];
var arrs=arr.concat("arr3",["arr4","arr5"]);//不影响原数组
console.log(arr);//["arr1", "arr2"]
console.log(arrs);//["arr1", "arr2", "arr3", "arr4", "arr5"]
//slice复制新数组
var arrs1=arrs.slice(1);//不影响原数组
var arrs2=arrs.slice(1,4);//不影响原数组,相当于arrs.slice(-4,-1),负数加上数组长度再进行获取新数组
console.log(arrs1);//["arr2", "arr3", "arr4", "arr5"],不影响原数组
console.log(arrs2);//["arr2", "arr3", "arr4"]
//splice删除
var removed=arr.splice(0,1,"arr1_1","arr1_2");//在0的位置开始删除1项,插入2项
console.log(arr); //["arr1_1", "arr1_2", "arr2"]
console.log(removed);//["arr1"]返回删除的项组成的数组
九、位置方法
indexOf()——从前往后查找。
lastIndexOf()——从尾部查找。
未找到的情况下都为-1。
//indexOf从前往后查找
var arr=[1,2,3,4,5,4,3,2,1];
console.log(arr.indexOf(4));//3,返回4所在位置
console.log(arr.indexOf("4"));//-1,未找到的情况下为-1,按===查找
//lastIndexOf从尾部查找
console.log(arr.lastIndexOf(4));//5,返回4所在位置
console.log(arr.lastIndexOf("4"));//-1,未找到的情况下为-1,按===查找
var person={name:"XXX"};//对象
var people=[{name:"XXX"}];//数组,含一项,这一项是一个对象(跟person无关)
var morePeople=[person];//数组,含一项,这一项是一个person对象
console.log(people.indexOf(person));//-1,people数组中不含person对象
console.log(morePeople.indexOf(person));//0,morePeople数组中含person对象,为第一项
十、迭代方法
every()——每一项都满足则返回true,否则返回false。
filter()——返回满足条件的项组成的数组,对原数组没有影响。
forEach()——相当于for循环。
map()——对数组进行操作,对原数组没有影响。
some()——至少一项满足则返回true,否则返回false。
var numbers=[1,2,3,4,5,4,3,2,1];
//every,每一项都满足则返回true,否则返回false
var everyResult=numbers.every(function(item,index,array){
return (item>2);
});
console.log(everyResult);//false
//filter,返回满足条件的项组成的数组,对原数组没有影响
var filterResult=numbers.filter(function(item,index,array){
return (item>2);
});
console.log(filterResult);//[3, 4, 5, 4, 3]
console.log(numbers);//[1,2,3,4,5,4,3,2,1]
//forEach,相当于for循环
numbers.forEach(function(item,index,array){
//执行某些操作
});//
//map,对数组进行操作,对原数组没有影响
var mapResult=numbers.map(function(item,index,array){
return (item*2);
});
console.log(mapResult);// [2, 4, 6, 8, 10, 8, 6, 4, 2]
console.log(numbers);//[1,2,3,4,5,4,3,2,1]
//some,至少一项满足则返回true,否则返回false
var someResult=numbers.some(function(item,index,array){
return (item>2);
});
console.log(someResult);//true
十一、归并方法
reduce()——第一遍prev=1,cur=2(第二项),第二遍prev=3(1+2),cur=3(第三项)。
reduceRight()——第一遍prev=5,cur=4(第四项),第二遍prev=9(5+4),cur=3(第三项)。
reduce()和reduceRight()遍历方向不同,除此之外都相同
var numbers=[1,2,3,4,5];
//reduce,第一遍prev=1,cur=2(第二项),第二遍prev=3(1+2),cur=3(第三项)
var sum=numbers.reduce(function(prev,cur,index,array){
return prev+cur;
});
console.log(sum);//15
//reduceRight,第一遍prev=5,cur=4(第四项),第二遍prev=9(5+4),cur=3(第三项)
var sum=numbers.reduce(function(prev,cur,index,array){
return prev+cur;
});
console.log(sum);//15
//reduce,和reduceRight遍历方向不同,除此之外都相同