一,新建数组
1.采用字面量方式创建数组
var arr1 = []; //创建空数组
var arr2 = [number]; //创建一个仅有一项且内容为number的数组
var arr3 = ["01" , "02" , ...];//创建多个值的数组
2.采用构造函数创建数组
var arr1 = new Array();//创建空数组
var arr2 = new Array(number);//创建一个长度为number的数组
var arr3 = new Array("01" , "02" , ...);//创建多个值的数组
注:任意两个数组都不相同
二,数组方法的总结
1.ES5前的数组方法
方法名 | 功能 |
---|---|
push() | 向数组的末尾添加一个或更多元素,并返回新的长度。 |
join() | 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。 |
pop() | 删除并返回数组的最后一个元素 |
shift() | 删除并返回数组的第一个元素 |
unshift() | 删除并返回数组的最后一个元素 |
sort() | 对数组的元素进行排序 |
reverse() | 颠倒数组中元素的顺序。 |
concat() | 连接两个或更多的数组,并返回结果。 |
slice() | 从某个已有的数组返回选定的元素 |
splice() | 删除元素,并向数组添加新元素 |
2.ES5之后新增数组方法
方法名 | 功能 |
---|---|
indexOf() | 根据传入的数据,查找在数组中的位置(从起点到终点) |
lastindexOf() | 根据传入的数据,查找在数组中的位置(从终点到起点) |
forEach() | 遍历数组,参数为回调函数 |
map() | 遍历数组,参数为回调函数,返回数组每项每回调用的结果 |
filter() | 过滤值,参数为回调函数,并返回到一个新数组中 |
some() | 遍历数组中是否有符合条件的值,只要有符合,那么就是true,同时停止遍历 |
every() | 遍历数组中是否有符合条件的值,必须全符合,才是true,如果有一项不符合,则停止遍历 |
reduce() | 归并,可以将每次回调函数的返回值,传入下次回调函数的执行,作为下一次回调函数的第一个参数存在。 |
reduceRight() | 反向归并,可以将每次回调函数的返回值,传入下次回调函数的执行,作为下一次回调函数的第一个参数存在。 |
三,数组方法的使用
(一)ES5之前方法的使用
1.push()
- 参数值:任意个,任意值
- 返回值:数组被增加之后的长度
- 功能:在数组的尾部增加数据,增加的数据是push的参数
- 是否会修改原数组:会修改原数组
var arr = [];
var a = arr.push(3,4,5);//向arr数组中插入数据
console.log(a);//返回值为3
2.join()
- 参数值:分隔符
- 返回值:转换以后的字符串- 功能:把数组的所有元素放入一个字符串。元素通过指定的分隔符(即参数)进行分隔。
- 是否会修改原数组:不会
var arr = [3,4,5];
var a = arr.join("-");//将arr数组转为字符
console.log(a);//返回值为3-4-5
3.pop()
- 参数值:无参数
- 返回值:删除的数据
- 功能:删除数组中的最后一位数据
- 是否会修改原数组:会修改原数组
var arr = [3,4,5];
var a = arr.pop();//删除arr的数据
console.log(a);//返回值为5
4.shift()
- 参数值:无参数
- 返回值:删除的数据
- 功能:删除数组中的第一位数据
- 是否会修改原数组:会修改原数组
var arr = [3,4,5];
var a = arr.shift();//删除arr的数据
console.log(a);//返回值为3
5.unshift()
- 参数值:要增加的数据
- 返回值:添加的数据
- 功能:在数组的头部添加数据
- 是否会修改原数组:会修改原数组
var arr = [3,4,5];
var a = arr.unshift(5);//向arr添加数据
console.log(a);//返回值为5
6.sort()
- 参数值:回调函数
- 返回值:排序好的数组
- 功能:排序数组
- 是否会修改原数组:会修改原数组
var arr = [3,4,5];
var res = arr.sort(function(a,b){
return a-b;//升序排列,反之则为降序排列
})
console.log(res);//结果为3,4,5 反之为5,4,3
7.reserve()
- 参数值:无参数
- 返回值:颠倒后的数组
- 功能:颠倒数组的顺序
- 是否会修改原数组:会修改原数组
var arr = [3,4,5];
var res = arr.reserve();
console.log(res);//结果为5,4,3
8.concat()
- 参数值:元素或者数组
- 返回值:拼接后的数组
- 功能:拼接数组
- 是否会修改原数组:不会
var arr = [3,4,5];
var res = arr.concat([1,2]);
console.log(res);//结果为3,4,5,1,2
9.slice()
- 参数值:第一个参数为从该指定位置开始截取,第二个值为结束的指定位置
- 返回值:截取到的数组
- 功能:截取指定范围内的数组
- 是否会修改原数组:不会
var arr = [3,4,5];
var res = arr.slice(1);
console.log(res);//结果为4,5
var res2 = arr.slice(1,2);
console.log(res2);//结果为4
10.splice()
- 参数值:
一个参数时:从指定索引处,删除数据到结束
两个参数时:从指定索引处,删除指定长度数据
三(多)个参数时:从指定索引处,删除指定长度数据,并添加其余参数进入数组 - 返回值:被删除的数据所组成的数组
- 功能:根据参数数量的不同,其功能有所不同
- 是否会修改原数组:会改变原数组
var arr = [3,4,5];
var res = arr.splice(1);
console.log(res);//结果为4,5
var res2 = arr.splice(1,2);
console.log(res2);//结果为4
(二)ES5新增方法的使用
1.indexOf()
- 参数值:
一个参数时:查询数组中是否存在某个数据
两个参数时:从指定索引处开始查询数组中是否存在某个数据 - 返回值:若数组中含有该数据,返回该数据的索引,不存在则返回-1
- 功能:查询指定数据的下标并且返回
- 是否会修改原数组:不会改变原数组
var arr=[1,2,5,4,7,2];
var res=arr.indexOf(2,2);//返回值是5
console.log(res);
var res1=arr.indexOf(6);//返回-1
console.log(res1);
2.lastindexOf()
- 参数值:
一个参数时:查询数组中是否存在某个数据
两个参数时:从指定索引处开始查询数组中是否存在某个数据 - 返回值:若数组中含有该数据,返回该数据的索引,不存在则返回-1
- 功能:从后向前查询指定数据的下标并且返回
- 是否会修改原数组:不会改变原数组
var arr=[1,2,5,4,7,2];
var res=arr.indexOf(2);//返回值是5
console.log(res);
var res1=arr.indexOf(6);//返回-1
console.log(res1);
3.forEach()
- 参数值:回调函数
- 返回值:undefined
- 功能:遍历数组
- 是否会修改原数组:不会改变原数组
var arr=[1,2,5,4,7,2];
arr.forEach(function(value,xb,self){
console.log(value+"-"+xb+"-"+ self);//value代表数组中的值,xb代表数组索引,self代表数组本身
})
4.map()
- 参数值:回调函数
- 返回值:数组,数组内是每个回调函数的返回值
- 功能:遍历数组
- 是否会修改原数组:不会改变原数组
注:map方法可以修改值,并返回到新数组中
var arr=[1,2,5,4,7,2];
arr.map(function(value,xb,self){
return value * 1.3;//将数组内每个元素增加百分之三十,并返回
})
5.filter()
- 参数值:回调函数
- 返回值:
若回调函数中没有返回值,则返回一个空数组
若回调函数中有返回值,且当回调函数的返回值为true时,将本次数据返回给filter;若回调函数为false时,返回空数组;最后filter将所有返回的数组组成一个新数组返回 - 功能:遍历数组,过滤符合条件的值
- 是否会修改原数组:不会改变原数组
var arr=[1,2,5,4,7,2];
arr.forEach(function(value,xb,self){
return value > 3;//返回值为5,4,7
})
6.some()
- 参数值:回调函数
- 返回值:Boolean值
若回调函数中没有返回值,则返回false
若回调函数中有返回值,且数组中存在符合条件的值,则返回true并立即停止遍历;若不存在符合条件的值,则返回false - 功能:遍历数组
- 是否会修改原数组:不会改变原数组
var arr=[1,2,5,4,7,2];
arr.forEach(function(value,xb,self){
return value > 3;//返回值为5,4,7
})
7.every()
- 参数值:回调函数
- 返回值:Boolean值
若回调函数中没有返回值,则返回false
若回调函数中有返回值,且数组中全部数据皆符合条件,则返回true;若存在不符合条件的值,则返回false并立即停止遍历 - 功能:遍历数组
- 是否会修改原数组:不会改变原数组
var arr=[1,2,5,4,7,2];
arr.forEach(function(value,xb,self){
return value > 3;//返回值为5,4,7
})
8.reduce()
- 参数值:
第一个参数是回调函数
第二个参数是若存在,则作为值保存在prev中 - 返回值:
若回调函数中没有返回值,则返回undefined
若回调函数中有返回值,则每次将返回值返回到prev中 - 功能:遍历,迭代数组
- 是否会修改原数组:不会改变原数组
var arr=[1,2,5,4,7,3,2];
var res=arr.reduce(function(prev,value,xb,self){
return prev+value;//返回值为17
//return prev;//返回数组第一个数据的值
})
var res2=arr.reduce(function(prev,value,xb,self){
return prev+value;//返回值为18,因为有第二个参数存在
//return prev; // 返回第二个参数的值
},1)
8.reduceRight()
- 参数值:
第一个参数是回调函数
第二个参数是若存在,则作为值保存在prev中 - 返回值:
若回调函数中没有返回值,则返回undefined
若回调函数中有返回值,则每次将返回值返回到prev中 - 功能:从右到左遍历,迭代数组
- 是否会修改原数组:不会改变原数组
var arr=[1,2,5,4,7,3,2];
var res=arr.reduceRight(function(prev,value,xb,self){
return prev+value;//返回值为17
//return prev;//返回数组最后一个数据的值
})
var res2=arr.reduceRight(function(prev,value,xb,self){
return prev+value;//返回值为18,因为有第二个参数存在
//return prev; // 返回第二个参数的值
},1)
仅供参考,如有问题,敬请留言,私聊也可以。只要我在,我就回复。