创建数组
使用 Array 构造函数创建数组
var arr1 = new Array(); //创建一个空数组
var arr2 = new Array(20); // 创建一个包含20项的数组
var arr3 = new Array("lily","lucy","Tom"); // 创建一个包含3个字符串的数组
使用数组字面量创建数组
var arr4 = []; //创建一个空数组
var arr5 = [20]; // 创建一个包含1项的数组
var arr6 = ["lily","lucy","Tom"]; // 创建一个包含3个字符串的数组
数组方法
1. join
join,将数组转为字符串,接收一个参数为分隔符,无参数默认逗号( , )分隔,原数组不变
var ary = [1,2,3];
ary.join(); // "1,2,3"
ary.join("/") // "1/2/3"
ary // [1, 2, 3]
2. push
push,向数组的末尾添加元素,接收一个或多个参数,返回新数组的 len 长度,原数组改变
var ary = [1,2,3];
ary.push(4);
ary // [1,2,3,4]
3. pop
pop,删除数组的末尾元素,返回删除的元素,原数组改变
var ary = [1,2,3,4,5,6];
ary.pop(); // 6
ary // [1,2,3,4,5]
4. shift
shifit,删除数组第一个元素,返回删除的元素,原数组改变
var ary = [1,2,3,4];
ary.shift(); // 1
ary // [2,3,4];
5. unshift
unshift,给数组的头添加元素,返回新数组的 len 长度,原数组改变
var ary = [1,2,3];
ary.unshift(4,5,6); // 6
ary // [4,5,6,1,2,3]
6. sort
sort,数组排序,接受一个函数为参数,无参数时,只能排序 0-9 以内,原数组改变
// 0-9 以内数组排序
var ary = [3,6,8,9,2,0,1,4,5]
ary.sort(); //[0, 1, 2, 3, 4, 5, 6, 8, 9]
// 10以上排序
var ary = [6,7,8,10,11,23,13];
ary.sort(function(a,b){
return a-b
}) //[6, 7, 8, 10, 11, 13, 23]
7. reverse
reverse,将数组以相反方式展示,返回改变后的数组,原数组改变
var ary = [1,2,3,4,5];
ary.reverse() // [5, 4, 3, 2, 1]
8. concat
concat,接受N个参数,无参数时,表示复制一份数组,原数组不变
var ary = [1,2,3];
var ary2 = ary.concat();
ary2 // [1,2,3]
ary // [1,2,3]
ary.concat(4,5); // [1,2,3,4,5]
ary // [1,2,3]
9. slice
slice,接受1或2个参数,参数为数组索引,从 N 处截取到 M 处,不包含 M ,原数组不变
var ary = [1,2,3,4,5];
ary.slice(1); // [2, 3, 4, 5]
ary.slice(1,4) // [2, 3, 4]
ary.slice(0) // [1, 2, 3, 4, 5] ,相当于复制一份数组
ary // [1, 2, 3, 4, 5]
10. splice
splice,3种功能,接受1到3个参数,参数为数组索引,原数组改变
- 1个参数时:从 N 处截取到数组末尾,返回截取的数组
- 2个参数时:从 N 处截取到 M 处,返回截取的数组
- 3个参数时
- 添加处理,起始位置,0 (删除项),要添加的元素
- 替换处理,起始位置,删除项,要替换的元素
//从索引 N,截取到末尾
var ary = [1,2,3,4,5]
ary.splice(1); //[2, 3, 4, 5]
ary // [1]
//索引 N,截取到 M 个
var ary2 = [1,2,3,4]
ary2.splice(2,4); //[3, 4]
ary2 //[1, 2]
//添加元素
var ary3 = [1,2,3,4]
ary3.splice(0,0,5,6,7);//[]
ary3//[5, 6, 7, 1, 2, 3, 4]
//替换元素
var ary4 = [1,2,3,4,5]
ary4.splice(0,2,8,9); //[1, 2]
ary4 // [8, 9, 3, 4, 5]
11. indexOf
indexOf,检查你输入的值是否存在,从索引0开始查找,存在返回所在索引,不存在返回 -1,原数组不变
var ary = [1,2,3,4];
ary.indexOf(2); // 1
ary.indexOf(22); // -1
ary // [1,2,3,4]
12. lastIndexOf
laxtIndexOf,检查你输入的值是否存在,从索引末尾开始查找,存在返回所在索引,不存在返回 -1,原数组不变
var ary = [1,2,3,4,5,6]
ary.lastIndexOf(2); //1
ary.lastIndexOf(22);// -1
ary // [1, 2, 3, 4, 5, 6]
13. forEach
forEach(),对数组进行遍历循环,参数是function类型,默认参数分别是:当前项,每项对应索引,数组本身,
无返回值,原数组不变
var ary = [1,2,3,4,5]
ary.forEach(function(cur,index,arr){
console.log("当前项:" + cur + " | 对应索引" + index + " | 原数组:" + arr);
})
//当前项:1 | 对应索引0 | 原数组:1,2,3,4,5
//当前项:2 | 对应索引1 | 原数组:1,2,3,4,5
//当前项:3 | 对应索引2 | 原数组:1,2,3,4,5
//当前项:4 | 对应索引3 | 原数组:1,2,3,4,5
//当前项:5 | 对应索引4 | 原数组:1,2,3,4,5
ary //[1,2,3,4,5]
14. map
map(),类似于“映射”,用法和 forEach 类似,根据调用函数处理返回值,原数组不变
//没有返回值
var ary = [1,2,3,4,5]
ary.map(function(cur,index,arr){
console.log(cur * 2);
})
//2
//4
//6
//8
//10
//[undefined, undefined, undefined, undefined, undefined]
ary// [1, 2, 3, 4, 5]
//有返回值
var ary2 = [1,2,3,4,5]
ary2.map(function(cur,index,arr){
return cur * 2
})
// [2, 4, 6, 8, 10]
ary2// [1, 2, 3, 4, 5]
15.filter
filter(),“过滤”功能,对数组每一项运行指定函数,返回满足过滤条件组成的新数组,原数组不变
var ary = [1,2,3,4];
ary.filter(function(cur,index,arr){
return cur > 3
}) //[4, 5]
ary // [1,2,3,4]
16. every
every(),判断数组中每一项是否满足条件,只有数组所有项都满足条件,才会返回true
var ary = [1,2,3,4,5];
ary.every(function(cur){
return cur < 10
}) //true
ary.every(function(cur){
return cur < 1
}) //flase
ary // [1,2,3,4,5]
17. some
some(),判断数组中的每一项是否满足条件,有一条满足,就返回true
var ary = [1,2,3,4];
ary.some(function(cur){
return cur > 4
})//false
ary.some(function(cur){
return cur > 3
})//true
ary.some(function(cur){
return cur < 3
})//true
18. reduce && reduceRight
reduce && reduceRight,函数累加器,接受4个参数(上次值,当前值,当前值索引,原数组)
返回一个回调函数,然后将前一次函数结果和下一次数据在执行次回调函数
//reduce
var ary = [1,2,3]
ary.reduce(function(par,cur){
return par * cur
}) // 6
ary//[1,2,3]
//reduceRight
var ary2 = [1,2,3]
ary2.reduceRight(function(a,b){
return a + b
})//6
ary2//[1,2,3]