1.创建数组的方式
1.1字面量
var arr =[1,2,3]
1.2构造函数(了解)
var arr = new Array();
2.检测数组
if(arr instanceof Array){}
if(Array.isArray(arr)){}
3.数组的方法
-
3.1.1增加(改变数组的内容)
- push() //从尾部添加
var arr =[1,2,3];
console.log(arr.push()); //3
var arr = [1,2,3];
arr.push(4);
console.log(arr); //1,2,3,4
- unshift() // 从头部添加
var arr = [1,2,3];
arr.unshift(0);
alert(arr); //0,1,2,3
-
3.1.2增加 concat()(不改变原来数组内容)
var arr = [1,2,3];
var b = arr.concat(4);
console.log(arr); //1,2,3
console.log(b); //1,2,3,4
var arr = [1,2,3];
var b = arr.concat(4);
console.log(arr); //1,2,3
console.log(b); //1,2,3,4
-
3.2删除(改变)
不接收参数
- pop() //从尾部删除
var arr = [1,2,3];
alert(arr.pop()); //3
alert(arr) //1,2
- shift() // 从头部删除
var arr = [1,2,3];
alert(arr.shift()); //1
alert(arr) //2,3
-
3.3修改,指定三个参数arrObject.splice(index,howmany,item)
//指定三个参数:起始位置,删除的项数,插入的数量
var arr = [1,2,3,4,5];
arr.splice(0,2,6,7);
alert(arr); //6,7,4,5
-
3.4查询
//arr[index] 查询对应下标的值
var arr=[1,2,3];
console.log(arr[0]); //1;
//indexOf(value) 查询对应值的下标
var arr=[1,2,3,4];
console.log(arr.indexOf(1)); //0
//如果没有对应的值,则返回-1
//arrayObject.slice(start,end)
//1个参数
var arr=[1,2,3,4];
var b=arr.slice(1);
console.log(b); //2,3,4
//2个参数
var c = arr.slice(1,3);
console.log(c); //2,3
-
3.5splice(改变原来数组) 包含增,删,改
//语法
arrayObject.splice(index,howmany,item1,.....,itemX)
a.增加,指定三个参数splice(index,howmany,item)
//splice(index,howmany,item)
//传3个参数表示:起始位置、0(删除的项数)、插入的项在index之后
var arr= [1,2,3,4,5];
arr.splice(2,0,"red","green"); //在第2位之后,增加2个元素
console.log(arr); //[1,2,"red","green",3,4,5]
b.删除,指定两个参数splice(index,howmany)
//splice(index,howmany)
//传2个参数表示:起始位置和删除的个数
var arr = [1,2,3,4,5];
arr.splice(0,2); //从0位开始,删除2个
alert(arr); //[3,4,5]
c.修改,指定三个参数splice(index,howmany,item)
//指定三个参数:起始位置,删除的项数,插入的数量
var arr = [1,2,3,4,5];
arr.splice(0,2,6,7);
alert(arr); //6,7,4,5
-
3.6join
//通过指定分隔符,将数组所有元素放入字符串
arrayObject.join(separator)
var arr=["red","green","yellow"];
var a = arr.join(); //red,green,yellow
var b= arr.join(""); //redgreenyellow
var c=arr.join("."); //red.green.yello
alert(c);
-
3.7排序
function compare(a,b){
if(a<b){
return -1;
}else if(a>b){
return 1;
}else{
return 0;
}
}
var arr=[1,3,78,12,4];
arr.sort(compare);
console.log(arr); //1,3,4,12,78
arr.reverse();
console.log(arr); //78,12,4,3,1
-
3.8迭代方法
- 3.8.1 every():对数组的每一项运行给定函数,如果该函数对每一项返回true,则返回true
var numbers = [1,2,3,4,5];
var everyResult = numbers.every(function(item,index,array){
return(item>2)
});
alert(everyResult); //false
- 3.8.2 some():对数组的每一项运行给定函数,如果该函数对任意一项返回true,则返回true
var numbers = [1,2,3,4,5];
var someResult = numbers.some(function(item,index,array){
return(item>2)
});
alert(someResult); //true
- 3.8.3 filter()对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组
var numbers = [1,2,3,4,5];
var filterResult = numbers.filter(function(item,index,array){
return (item>2);
});
alert(filterResult); //[3,4,5]
- 3.8.4 map()对数组中的每一项运行给定函数,返回每次函数调用的结果组成的函数。
var numbers = [1,2,3,4,5];
var mapResult = numbers.map(function(item,index,array){
return item*2;
});
alert(mapResult); //2,4,6,8,10
- 3.8.5 forEach()对数组中的每一项运行给定函数。这个方法没有返回值
var numbers = [1,2,3,4,5];
numbers.forEach(function(item,index,array){
console.log(item);
});
-
3.9归并(求和)方法
reduce()和reduceRight()这两个方法都会迭代数组的所有项,然后构建一个最终返回的值。
区别:
前者从头开始遍历
后者从后开始遍历
var numbers = [1,2,3,4,5];
var sum = numbers.reduce(function(prev,cur,index,array){
return prev+cur;
});
alert(sum); //15
var numbers = [1,2,3,4,5];
var sum = numbers.reduceRight(function(prev,cur,index,array){
return prev+cur;
});
alert(sum); //15