1.创建方法
1.直接创建
var arr=new Array(); //()可以传递参数,表示数组长度,也可以不传
2.数组字面量
var arr=[2,4,,5,6] ;
2.检测方法
- instanceof
eg:
arr=[1,3,4];
arr instanceof Array;//true
>2. isArray()
eg:
Array.isArray(arr);//true;
3.头尾删除添加方法
因为js中数组长度是可变的,所以不用预先设置其长度或申请空间;
- 头部增加元素:arr.unshift(value1,value2,value3,...);
//数组前端添加任意个项并返回修改后数组长度; - 尾部添加元素:arr.push(value1,value2,value3,...);
//数组尾端添加任意个项并返回修改后数组长度;
3.头部删除元素:
arr.shift();//移除数组的第一项并返回该项; - 尾部添加元素:
arr.pop();/移除数组的最后一项并返回该项;
4.排序方法
因为数组自身提供的arr.sort()函数字符顺序进行排序的,所以当数字大于10的情况下,就很可能发生错误,所以我们需要自定义排序方法;
error example:
var values=[10,1,5,10,15];
values.sort();
console.log(values);//0,1,10,15,5
重写方法:
function compare(a,b){
if(a>b){
return 1;
}
else if(a<b){
return -1;
}
else{
return 0;
}
}
5.数组操作方法
1.splice()方法删除:
arr.splice(起始位置,分割长度),下标从0开始;
eg:
arr=[2,5,1,89,23,14,67]
arr.splice(2,2);
arr为[2, 5, 23, 14, 67]
2..splice()方法插入:
1.只插入不删除(第一个参数表示开始的下标位置,第二个参数为0即可表示不删除,后面元素个数可选,表示要插入的元素)
arr=[2, 5, 1, 89, 23, 14, 67]
arr.splice(3,0,100);
arr为[2, 5, 1, 100, 89, 23, 14, 67]
arr.splice(3,0,0,0)
arr为[2, 5, 1, 0, 0, 100, 89, 23, 14, 67]
2.删除又插入(即替换)(第一个参数表示开始的下标位置,第二个参数表示删除的元素个数,后面元素个数可选,表示要插入的元素)
arr=[2, 5, 1, 89, 23, 14, 67]
a.splice(2,2,6)
arr为[2, 5, 6, 23, 14, 67]
3.slice()方法截取:(返回一个新数组,不影响当前数组)
1.一个参数:表示当前位置到数组末尾的所有项
arr=[2,4,6,7,8,1,4];
var result=arr.slice(3);
result为:[7, 8, 1, 4];
2.两个参数:起始位置和结束位置,不包括结束位置的项
arr=[2,4,6,7,8,1,4];
var result=arr.slice(3,6);
result为:[7, 8, 1];
PS:数组长度为负数时,表示数组长度+该数;
结束位置小于开始位置时,返回空数理;
4.indexOf()和lastIndexOf()方法:
参数:第一个参数表示要查找的项,第二个参数表示开始查找位置(可选);
indexOf():从头开始向后查找;
lastIndexOf():从数组的末尾往前查找;
arr=[2,4,6,7,8,1,4];
arr.indexOf(4); result:1
arr.lastIndexOf(4); result:6
arr.indexOf(4,3); result:6
arr.lastIndexOf(4,3) result:1
5.迭代方法
1.every():对数组的每一项运行给定函数,函数每一项都返回true,则返回true;
arr=[3,5,7,1,9,5,3];
let flag=arr.every(function(item){
return item>0;
});
alert(flag);//true;
arr=[3,5,7,1,9,5,3];
let flag=arr.every(function(item){
return item>5;
});
alert(flag);//false;
2.some():对数组的每一项执行给定函数,如果数组的某一项返回true,则返回true;
arr=[3,5,7,1,9,5,3];
let flag=arr.some(function(item){
return item===9;
});
alert(flag);//true;
arr=[3,5,7,1,9,5,3];
let flag=arr.some(function(item){
return item>10;
});
alert(flag);//false;
3.map():对数组的每一项执行给定函数,返回每次调用函数的结果组成的数组;
arr=[3,5,7,1,9,5,3];
let result=arr.map(function(item){
return item*5;
});
alert(result);//[15, 25, 35, 5, 45, 25, 15];
4.filter():对数组的每一项执行给定函数,返回每次调用函数结果为true的项组成的数组;
arr=[3,5,7,1,9,5,3];
let result=arr.filter(function(item){
return item>5;
});
alert(result);//[7, 9];
5.reduce():迭代数组的所有项,返回一个最终值
回调函数接收四个参数:前一个值,当前值,项的索引和数组对象;第一次迭代发生在数组的第二项上;
arr=[3,5,7,1,9,5,3];
let result=arr.reduce(function(prev,cur,index,array){
return prev+cur;
});
alert(result);//33;
PS:reduceRight():和reduce一样,主要区别在于reduceRight()从数组的最后一项开始遍历数组,直到数组的第一项;
希望我的文章可以帮助到你,谢谢~~