代码之家  ›  专栏  ›  技术社区  ›  Alan Le

如何使用javascript轻松截断数组?

  •  68
  • Alan Le  · 技术社区  · 16 年前

    Linq有一个方便的运算符方法,称为 Take() 返回任何实现 IEnumerable . jquery中是否有类似的方法来处理数组?

    6 回复  |  直到 7 年前
        1
  •  133
  •   David Mason    10 年前

    有一个 slice 方法

    array.slice(0, 4);
    

    将返回前四个元素。

    如果要放弃其他值,请不要忘记将其赋回变量。

    注意:这只是普通的javascript,不需要jquery。

        2
  •  100
  •   Jonathan M    7 年前

    (2年后…)如果您真的希望截断数组,也可以使用 length 属性:

    var stooges = ["Moe", "Larry", "Shemp", "Curly", "Joe"];
    stooges.length = 3; // now stooges is ["Moe", "Larry", "Shemp"]
    

    注意:如果指定的长度是 比较长的 与当前长度相比,引入了未定义的数组元素,如下所示。

    var stooges = ["Moe", "Larry", "Shemp"];
    stooges.length = 5;
    alert(typeof stooges[4]); // alerts "undefined"
    

    编辑:

    正如下面提到的@twhitehead,通过这样做可以避免添加未定义的元素:

    var stooges = ["Moe", "Larry", "Shemp"];
    stooges.length = Math.min(stooges.length, 5); 
    alert(stooges.length)// alerts "3"
    
        3
  •  20
  •   Jacob    9 年前

    如果您询问如何截断(通过从末尾删除元素来修改数组),则使用 splice :

    var a1 = [2,4,6,8];
    var a2 = a1.splice(-2,2); // a1=[2,4], a2=[6,8]
    

    如果您询问如何在不修改原始数组的情况下检索数组的子集,请使用 slice .

    var a1 = [2,4,6,8];
    var a2 = a1.slice(-2); // a1=[2,4,6,8], a2=[6,8]
    

    只需记住拼接修改、切片访问。负数作为第一个参数表示从数组末尾开始的索引。

        4
  •  8
  •   Brad Koch Daniel Wright    10 年前

    将.length属性设置为较低的值。

    官方文件: Array.prototype.length

        5
  •  5
  •   PatrikAkerstrand    16 年前

    如果要同时获取元素并从数组中移除它们,请使用 splice .

    如果要保留数组中的元素,请使用 slice

        6
  •  2
  •   Pier-Luc Gendreau    10 年前

    如果要有选择地从数组中提取元素,可以使用 jQuery.grep 方法。

    (来自jquery文档)

    var arr = [ 1, 9, 3, 8, 6, 1, 5, 9, 4, 7, 3, 8, 6, 9, 1 ];
    
    $("div").text(arr.join(", "));
    
    arr = jQuery.grep(arr, function(n, i){
      return (n != 5 && i > 4);
    });
    
    $("p").text(arr.join(", "));
    
    arr = jQuery.grep(arr, function (a) { return a != 9; });
    $("span").text(arr.join(", "));