代码之家  ›  专栏  ›  技术社区  ›  RamAlx

从数组末尾删除第n个元素

  •  2
  • RamAlx  · 技术社区  · 7 年前

    我有这样一个数组:

    array = [1,2,3,4,5,6,7,8]
    

    例如,我想删除最后4个值,以便我的数组变成: 数组=[1,2,3,4] 我使用了数组。拼接(array.length-4,1),但不起作用。有什么想法吗?

    4 回复  |  直到 7 年前
        1
  •  7
  •   Community CDub    4 年前

    您可以使用该功能 slice 具体如下:

    .slice(0, -4)
    

    这种方法不会修改原始数组

    //                                    +---- From 0 to the index = (length - 1) - 4,
    //                                    |     in this case index 3.
    //                                  vvvvv
    var array = [1,2,3,4,5,6,7,8].slice(0, -4);
    console.log(array);
    .as-console-wrapper { max-height: 100% !important; top: 0; }

    此方法修改原始数组

    var originalArr = [1, 2, 3, 4, 5, 6, 7, 8];
    
    //                     +---- Is optional, for your case will remove 
    //                     |     the elements ahead from index 4.
    //                     v
    originalArr.splice(-4, 4);
    console.log(originalArr);
    
    //----------------------------------------------------------------------
    
    originalArr = [1, 2, 3, 4, 5, 6, 7, 8];
    //                  +---- Omitting the second param.
    //                  |     
    //                  v
    originalArr.splice(-4);
    console.log(originalArr);
    。作为控制台包装{最大高度:100%!重要;顶部:0;}

    文档

        2
  •  1
  •   Jonas Dal Farra    7 年前

    从结束列表中删除4个元素

    var myList = [1,2,3,4,5,6,7,8];
    var removed = myList.splice(-myList.length-4, 4);
    

    https://jsfiddle.net/etuf28bj/4/

        3
  •  0
  •   Mateusz Maciejewski    7 年前
    array.splice(0,4)
    

    将从数组开始处删除0个元素,从数组结束处删除4个元素

        4
  •  0
  •   yajiv    7 年前

    您还可以使用 filter 用于删除元素(它不会修改现有数组)

    array = [1,2,3,4,5,6,7,8];
    array1=array.filter((x,i)=>i<array.length-4);
    console.log(array1);

    或者您可以使用 splice (它将更改阵列本身)

    array = [1,2,3,4,5,6,7,8];
    array.splice(-4);
    console.log(array);