js常用的数组操作

本文详细解析了JavaScript中数组的各种操作方法,包括增删改查、排序、拼接、遍历等,通过实例展示了每种方法的具体应用和注意事项。
  • shift:删除原数组第一项,并返回删除元素的值;如果数组为空则返回undefined
    var a = [1,2,3,4,5];   
    var b = a.shift(); //a:[2,3,4,5]  b:1  
    var c=[];
    var d = c.shift(); //c:[]  d:undefined 
复制代码
  • unshift:将指定的元素添加到原数组开头,并返回数组的长度
    var a = [1,2,3,4,5];   
    var b = a.unshift(-2,-1); //a:[-2,-1,1,2,3,4,5]  b:7  
复制代码
  • pop:删除原数组最后一项,并返回删除元素的值;如果数组为空则返回undefined
    var a = [1,2,3,4,5];   
    var b = a.pop(); //a:[1,2,3,4]  b:5
    var c=[];
    var d = c.pop(); //c:[]  d:undefined
复制代码
  • push:将新元素添加到原数组末尾,并返回数组的长度
    var a = [1,2,3,4,5];   
    var b = a.push(6,7); //a:[1,2,3,4,5,6,7]  b:7  
复制代码
  • concat:返回一个新数组,这个新数组是由两个或更多数组组合而成,不会改变原数组
    var a = [1,2,3,4,5];   
    var b = a.concat(6,7); //a:[1,2,3,4,5]  b:[1,2,3,4,5,6,7]  
复制代码
  • splice(start,deleteCount,val1,val2,...):从start位置开始删除deleteCount项,并从该位置起插入val1,val2,...,返回所移除的元素,如果deleteCount=0,则返回空数组
    var a = [1,2,3,4,5];   
    var b = a.splice(2,2,7,8,9); //a:[1,2,7,8,9,5] b:[3,4]   
    var b = a.splice(0,1); //同shift
    a.splice(0,0,-2,-1); var b = a.length; //同unshift   
    var b = a.splice(a.length-1,1); //同pop
    a.splice(a.length,0,6,7); var b = a.length; //同push  
复制代码
  • reverse:将数组反序并返回反转后的数组
    var a = [1,2,3,4,5];   
    var b = a.reverse(); //a:[5,4,3,2,1]  b:[5,4,3,2,1]  
复制代码
  • sort(orderfunction):按指定的参数对数组进行排序,返回排序后的数组
    var a = [1,5,3,4,2];   
    var b = a.sort(); //a:[1,2,3,4,5]  b:[1,2,3,4,5]  
    
    persons=[
        {name:"青子",age:16},
        {name:"灵棋",age:14},
        {name:"qingzi",age:17},
        {name:"lingqi",age:15}
    ];
    var personsSort=persons.sort(function(p1,p2){
        return p1.age-p2.age;//按年龄升序排序,如若降序只需改成p2.age-p1.age
    });
复制代码
  • slice(start,end):返回从原数组中指定开始下标[包含]到结束下标[不包含]之间的项组成的新数组,如果只传一个参数start,默认截取到数组结尾,不会改变原数组
    var a = [1,2,3,4,5];   
    var b = a.slice(2,5); //a:[1,2,3,4,5]  b:[3,4,5]  
复制代码
  • join(separator):将数组的元素组起一个字符串,以separator为分隔符,省略的话则用默认用逗号为分隔符,不会改变原数组
    var a = [1,2,3,4,5];   
    var b = a.join(","); //a:[1,2,3,4,5]  b:"1,2,3,4,5"  
复制代码
  • toString:将数组转换为字符串,并返回结果,不会改变原数组
    var a = [1,2,3,4,5];  
    var b = a.toString();//a:[1,2,3,4,5]  b:"1,2,3,4,5"
复制代码
  • forEach(function(value,index,arr){},obj):遍历数组,没有返回值,参数说明如下:
          第一个参数:数组当前元素的值
          第二个参数:当前元素的索引值
          第三个参数:数组对象本身
          第四个参数:当执行回调函数时this绑定对象的值,默认值为undefined
      
    a = [1,2,3,4,5];
    var obj = {name:'qingzi'};
    a.forEach(function (value, index, array) { 
         console.log(value);//依次打印1 2 3 4 5
         console.log(this.name); //qingzi打印5次,this绑定在obj对象上
    }, obj);
复制代码
  • filter(function(value,index,arr){},obj):过滤数组,根据返回值为true或false决定循环当前项要不要被添加到返回的新数组里,参数说明如下:
          第一个参数:数组当前元素的值
          第二个参数:当前元素的索引值
          第三个参数:数组对象本身
          第四个参数:当执行回调函数时this绑定对象的值,默认值为undefined
      
    var a = [1,2,3,4,5];
	var obj = {name:'qingzi'};
    var b = a.filter(function (value, index, array) {
    	console.log(this.name);//qingzi打印5次,this绑定在obj对象上
        return value >= 4; // 返回a数组中所有大于等于4的元素
    },obj);
    console.log(a,b);//a:[1, 2, 3, 4, 5]  b:[4, 5]
复制代码
  • map(function(value,index,arr){},obj):有返回值,根据回调函数里的返回值,生成一个新的数组,参数说明如下:
          第一个参数:数组当前元素的值
          第二个参数:当前元素的索引值
          第三个参数:数组对象本身
          第四个参数:当执行回调函数时this绑定对象的值,默认值为undefined
      
    var a = [1,2,3,4,5];
    var obj = {name:'qingzi'};
	var b = a.map(function (value, index, array) {
	    console.log(this.name);//qingzi打印5次,this绑定在obj对象上
  	    return value*10;
	},obj);
	console.log(a,b); //a:[1, 2, 3, 4, 5]  b:[10, 20, 30, 40, 50]
复制代码
  • reduce(function(total,value,index,arr){},obj):有返回值,为数组提供累加器,将数组中的每个元素合并为一个值,参数说明如下:
          第一个参数:初始值, 或者上一次调用回调返回的值
          第二个参数:数组当前元素的值
          第三个参数:当前元素的索引值
          第四个参数:数组对象本身
          第五个参数:指定第一次回调的第一个参数值。
      
    var arr = [1,2,3,4,5];
	let sum = arr.reduce(function (total,value,index,arr) {
        return total + value;
    }, 0);
    console.log(sum);//15
复制代码

转载于:https://juejin.im/post/5bca9d71f265da0ad13bb43d

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值