数组(Array)方法大集结
- 1.push
+ 参数:任意个,任意值
+ 返回值:数组被增加之后的长度
+ 功能:在数组末尾添加数据,增加的数据是push的参数
+ 是否改变数组:改变原数组
var arr=[1,2,3,4];
var res=arr.push("hello","world");
console.log(arr);//1, 2, 3, 4, "hello", "world"
console.log(res);//6
- 2.pop
+ 参数:没有
+ 返回值:被删除的数据
+ 功能:删除数组的最后一个
+ 是否改变数组:改变原数组
var arr=[1,2,3,4];
var res=arr.pop();
console.log(arr);//1,2,3
console.log(res);//4
- 3.unshift
+ 参数:任意个,任意值
+ 返回值:数组增加之后的长度
+ 功能:在数组最前面添加数据,添加的数据是push的参数
+ 是否改变数组:改变原数组
var arr=[1,2,3,4];
var res=arr.unshift("hello","world",11);
console.log(arr);//"hello", "world", 11, 1, 2, 3, 4
console.log(res);//7
- 4.shift
+ 参数:没有
+ 返回值:删除的数据
+ 功能:删除数组中的第一个数据
+ 是否改变原数组:改变原数组
var arr=[1,2,3,4];
var res=arr.shift();
console.log(arr);//2,3,4
console.log(res);//1
- 5.splice
+ 参数和功能:一个参数表示索引,从指定的索引开始,删除到结束;两个参数,第一个表示索引,第二个表示删除的个数,从指定索引开始,删除指定个数个;多个,第一个表示索引,第二个表示个数,从第三个参数开始向后都是数据,从指定索引开始,删除指定个数个,填充第三个参数开始向后
+ 如果传入的参数不按照规则,会强行按照自己的规则解析
+ 返回值:删除的数据
+ 是否改变原数组:改变原数组
var arr=[1,2,3,4];
//一个参数
// var res=arr.splice(1);
// console.log(arr);//1
// console.log(res);//2,3,4
//两个参数
// var res=arr.splice(1,2);
// console.log(arr);//1,4
// console.log(res);//2,3
//三个参数
var res=arr.splice(1,2,9);
console.log(arr);//1,9,4
console.log(res);//2,3
- 6.reverse
+ 参数:没有
+ 返回值:改变之后的数组
+ 功能:将数组中的数据翻转
+ 是否改变原数组:改变原数组
var arr=[1,2,3,4];
console.log(arr);//1, 2, 3, 4
var res=arr.reverse();
console.log(res);//4, 3, 2, 1
console.log(arr);//4, 3, 2, 1
- 7.join
+ 参数:连接字符串的符号,不写,默认逗号
+ 返回值:转化之后的字符串
+ 功能:将数组转化成字符串
+ 是否改变原数组:不改变原数组
var arr=[1,2,3,4];
console.log(arr);//1, 2, 3, 4
var res=arr.join("-");
console.log(arr);//1, 2, 3, 4
console.log(res);//1-2-3-4
- 8.sort
+ 参数:不写参数默认字符排序规则:逐位比较;参数为函数,是一个回调函数
+ 功能:对数组中的数据排序,a-b从小到大,b-a从大到小
+ 返回值:是排序后的数组
+ 是否改变原数组:会改变原数组
var arr=[11,12,33,4];
var res=arr.sort(
function(a,b){
return a-b;
}
);
console.log(arr);//4, 11, 12, 33
console.log(res);//4, 11, 12, 33
- 9.slice
+ 参数和功能:一个,从指定索引开始截取直到结束;两个,从指定索引开始截取,截取到第二个参数的前一个
+ 返回值:截取到的新数组
+ 是否改变原数组:不改变原数组
var arr=[1,2,3,4,6,5,0];
//一个参数
var res=arr.slice(2);
console.log(arr);//1, 2, 3, 4, 6, 5, 0
console.log(res);//3,4,6,5,0
//两个参数
// var res=arr.slice(1,3);
// console.log(arr);//1, 2, 3, 4, 6, 5, 0
// console.log(res);//2,3
- 10.concat
+ 参数:数组
+ 功能:合并数组
+ 返回值:合并后的数组
+ 不改变原数组
var arr1=[1,2,3];
var arr2=[4,5,6];
console.log(arr1);//1,2,3
var res=arr1.concat(arr2);//将arr2合并到arr1中去
console.log(res);//1, 2, 3, 4, 5, 6
console.log(arr1);//1,2,3
- 11.indexOf
+ 参数:要查询的元素(从前面开始查询)
+ 功能:查询是否存在某个数
+ 返回值:有,返回元素的索引;没有,返回-1;如果有两个参数,第二个表示从第几位开始从前往后找
+ 是否改变原数组:不改变原数组
var arr=[12,23,34,13,87,45];
console.log(arr);//12, 23, 34, 13, 87, 45
var a=arr.indexOf(12);
console.log(a);//0
console.log(arr);//12, 23, 34, 13, 87, 45
- 12.lastIndexOf
+ 参数:要查询的元素(从后面开始查询)
+ 功能:查询是否存在某个数
+ 返回值:有,返回元素的索引;没有,返回-1;如果有两个参数,第二个表示从第几位开始从后往前找
+ 是否改变原数组:不改变原数组
var arr=[12,23,34,13,87,23,45];
console.log(arr);//12, 23, 34, 13, 87, 23, 45
var a=arr.lastIndexOf(23);
console.log(a);//5
console.log(arr);//12, 23, 34, 13, 87, 23, 45
- 13.forEach(迭代/遍历)
+ 参数:回调函数(val表示数组中的数据;index表示索引;self表示数组本身)
+ 功能:遍历数组
+ 返回值:undefined
+ 是否改变数组:不改变原数组
var arr=[12,23,34,13,87,23,45];
console.log(arr);//12, 23, 34, 13, 87, 23, 45
var res=arr.forEach(function(val,index,self){
console.log(val,index,self);
})
console.log(res);//undefined
console.log(arr);//12, 23, 34, 13, 87, 23, 45
- 14.map(可以修改值,返回到新数组)
+ 参数:回调函数
+ 功能:遍历,可以做将数组所有元素做同一变化
+ 返回值:数组,数组内是每个回调函数的返回值;不写返回值,数组中是undefied
+ 是否改变数组:不改变原数组
var arr=[12,23,34,13,87,23,45];
console.log(arr);//12, 23, 34, 13, 87, 23, 45
var res=arr.map(function(val,index,self){
// console.log(val,index,self);
return val*1.3;
})
console.log(res);//15.600000000000001, 29.900000000000002, 44.2, 16.900000000000002, 113.10000000000001, 29.900000000000002, 58.5
console.log(arr);//12, 23, 34, 13, 87, 23, 45
- 15.filter(过滤,并返回到一个新数组)
+ 参数:回调函数
+ 功能:过滤元素
+ 返回值:数组,数组内是每个回调函数的返回值;不写返回值,是空数组;返回true得到的数组;返回false是空数组
+ 是否改变数组:不改变原数组
var arr=[12,23,34,13,87,23,45];
console.log(arr);//12, 23, 34, 13, 87, 23, 45
var res=arr.filter(function(val,index,self){
// console.log(val,index,self);
// return true;
// return false;
return val>30;
})
console.log(res);//34, 87, 45
console.log(arr);//12, 23, 34, 13, 87, 23, 45
- 16.some(配合every记忆)
+ 参数:回调函数
+ 功能:遍历数组中是否有符合条件的值,只要有符合那么就是true,同时停止遍历
+ 返回值:返回值是布尔值,true或者false
+ 是否改变数组:不改变原数组
var arr=[12,23,34,13,87,23,45];
console.log(arr);//12, 23, 34, 13, 87, 23, 45
var res=arr.some(function(val,index,self){
// console.log(val);
return val == 23;
})
console.log(res);//true
console.log(arr);//12, 23, 34, 13, 87, 23, 45
- 17.every
+ 参数:回调函数
+ 功能:遍历数组中是否有符合条件的值,必须全部符合,都是true才是true,如果有一个为false就是false,同时停止遍历
+ 返回值:返回值是布尔值,true或者false
+ 是否改变数组:不改变原数组
var arr=[12,23,34,13,87,23,45];
console.log(arr);//12, 23, 34, 13, 87, 23, 45
var res=arr.every(function(val,index,self){
// console.log(val);
// return true;
// return false;
return val == 23;
})
console.log(res);//false
console.log(arr);//12, 23, 34, 13, 87, 23, 45
- 18.reduce
+ 参数:回调函数
+ 功能和返回值:主要功能是归并,可以将每次函数的返回值,传入下次回调函数的执行,作为下次回调函数的第一个参数存在,第一个参数表示数组的第一个数据
+ 如果有两个参数,第二个参数可以修改prev的值
+ 是否改变数组:不改变原数组
var arr=[12,23,34,13,87,23,45];
console.log(arr);//12, 23, 34, 13, 87, 23, 45
var res=arr.reduce(function(prev,val,index,self){
// console.log(prev,"--",val,"--",index,"--",self);
// console.log(val);
return prev+val;//累加时,加上第二个参数
},66)
console.log(res);//303
console.log(arr);//12, 23, 34, 13, 87, 23, 45
- 19.reduceRight
+ 参数:回调函数
+ 功能和返回值:主要功能是从右至左归并,可以将每次函数的返回值,传入下次回调函数的执行,作为下次回调函数的第一个参数存在,第一个参数表示数组的最后一个数据
+ 是否改变数组:不改变原数组
var arr=[12,23,34,13,87,23,45];
console.log(arr);//12, 23, 34, 13, 87, 23, 45
var res=arr.reduceRight(function(prev,val,index,self){
// console.log(prev,"--",val,"--",index,"--",self);
// console.log(val);
return prev+val;//累加时,加上第二个参数
},66)
console.log(res);//303
console.log(arr);//12, 23, 34, 13, 87, 23, 45
文中如有不妥之处,欢迎大家留言指正,非常感谢
❤所有的努力,不是为了让别人觉得你了不起,而是首先让自己过得充实有追求。人生的奔跑,不在于瞬间的爆发,取决于途中的坚持,加油,奥里给!❤