美文网首页
数组的增删改排列排序push,unshift,pop,shift

数组的增删改排列排序push,unshift,pop,shift

作者: 小柠有点萌 | 来源:发表于2020-06-07 17:20 被阅读0次
    数组的常用方法路线:
    方法的作用和含义
    方法的实参(类型和含义)
    方法的返回值
    原来数组是否会发生改变

    1.数组的增删改

    这一部分都会修改原有的数组

    push

    push: 向数组末尾增加内容
    @params
    多个任意类型
    @return
    新增后数组的长度

    let ary = [10, 20];
    let res=ary.push("aa", 44);
    console.log(res,ary)
    结果:
    4 (4) [10, 20, "aa", 44]
    
    扩展 :基于原生js操作键值对添加内容
    let ary = [10, 20];
    ary[ary.length] = 40;
    console.log(res, ary)
    结果:
    [10, 20, 40]
    

    unshift

    unshift: 向数组开头增加一项
    @params
    多个任意类型
    @return
    新增后数组的长度

    let ary = [10, 20];
    let res=ary.unshift("aa", 44);
    console.log(res,ary)
    结果:
    4 (4) [ "aa", 44,10, 20]
    
    扩展 :基于原生es6展开运算符,把原来的ary克隆了一份,在新数组中创建第一项
    let ary = [10, 20];
    ary=[100, ...ary];
    console.log(ary)
    结果:
    [100,10, 20]
    

    shift

    shift: 删除数组第一项
    @params
    @return
    删除的那一项

    let ary = [10, 20];
    let res=ary.shift();
    console.log(res,ary)
    结果:
    10,Array(1) 
    0: 20
    length: 1
    __proto__: Array(0)
    
    基于原生js中的delete,把数组当成普通对象,可以删除掉某一项内容,但还是不会影响数组本身的结构特点(length长度不会修改,所以真实数组项目中一般不用del删除)
    

    pop

    pop: 删除数组最后一项
    @params
    @return
    删除的那一项

    let ary = [10, 20];
    let res=ary.pop();
    console.log(res,ary)
    结果:
    20,Array(1) 
    0: 10
    length: 1
    __proto__: Array(0)
    
    扩展:基于原生js让数组长度减少一位
    let ary = [10, 20];
    ary.length--; =>ary.length-1
    console.log(ary)
    结果:
    Array(1) 
    0: 10
    length: 1
    __proto__: Array(0)
    

    splice

    splice: 实现数组的删除修改
    @params
    参数:n,m,x
    1,不写x:
    n,m 数字 从索引n开始,删除m个元素,只写n,不写m,默认删除到末尾
    2.n,m,x 从索引n开始删除m个元素,用x占用删除部分

    3.n,0,x 从索引n开始,一个都不剩,把x放到索引n的前面

    @return
    把删除的部分用新数组返回

    删除
    
    let ary = [10,20,30,40];
    let res=ary.splice(2,2);
    console.log(res,ary)
    结果:
    (2) [30, 40] 删除的
     (2) [10, 20] 结果
    
    替换修改
    
    let ary = [10,20,30,40];
    let res=ary.splice(2,2, "这里","是","用来","补位的");
    console.log(res,ary)
    结果:
    (2) [30, 40] 删除的
    (6) [10, 20, "这里","是","用来","补位的"] 替换结果
    
    添加
    
    let ary = [10,20,30,40];
    let res=ary.splice(1,0, "这里","是","用来","补位的");
    console.log(res,ary)
    补位结果:
    [] 删除的
    (8) [10, "这里", "是", "用来", "补位的", 20, 30, 40]  结果
    
    
    
    //向数组末尾追加 aaaa
    ary.splice(ary.length,0,"aaaa")
    //向数组开始追加 aaaa
    ary.splice(0,0,"aaaa")
    

    2.数组的排序/排列

    reverse

    reverse: 数组倒过来排列
    @params
    @return
    排列过后的新数组,原来数组改变

    let ary1 = [10, 20, 30, 40,20];
    console.log(ary1.reverse())
    
    结果:
    [20, 40, 30, 20,10]
    

    sort

    sort: 实现数组的排序
    @params
    可传可不传
    @return
    排序过后的新数组,原来数组改变

    sort方法中如果不传递参数,是无法处理10以上的数字排序(它默认按照第一项第一个字符来排,不是我们想要的效果)

    
    let ary1 = [1,8,3,9,2,0];
    ary1.sort()
    console.log(ary1)  => [0,1,2,3,8,9]
    //sort方法中如果不传递参数,是无法处理10以上的数字排序(它默认按照第一项第一个字符来排,不是我们想要的效果)
    let ary2 = [12,15,9,28,10,22];
    ary2.sort()
    console.log(ary2)  => [10,12,15,22,28,9]   //它默认按照第一项第一个字符来排
    
    扩展处理
    let ary = [12,15,9,28,10,22];
    //由小到大排序
    ary.sort((a,b)=>{
    //a,b是相邻的两项
       return a-b;
    })
    console.log(ary) => 结果 [9, 10, 12, 15, 22, 28]
    
    //由大到小排序
    ary.sort((a,b)=>{
       return b-a;
    })
    console.log(ary) => 结果 [28, 22, 15, 12, 10, 9]
    

    相关文章

      网友评论

          本文标题:数组的增删改排列排序push,unshift,pop,shift

          本文链接:https://www.haomeiwen.com/subject/ppqbzhtx.html