JavaScript数组(Array)方法大集结

数组(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

文中如有不妥之处,欢迎大家留言指正,非常感谢
❤所有的努力,不是为了让别人觉得你了不起,而是首先让自己过得充实有追求。人生的奔跑,不在于瞬间的爆发,取决于途中的坚持,加油,奥里给!❤

猜你喜欢

转载自blog.csdn.net/yu_yuxiaoer/article/details/105314148
今日推荐