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

时间:2009-06-04 21:01:32

标签: javascript jquery

Linq有一个方便的运算符方法Take(),可以在实现IEnumerable的任何内容中返回给定数量的元素。 jQuery中有没有类似于使用数组的东西?

6 个答案:

答案 0 :(得分:139)

有一个slice方法

array.slice(0, 4);

将返回前四个元素。

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

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

答案 1 :(得分:107)

(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"

答案 2 :(得分:21)

如果你问如何截断(通过从末尾删除元素来修改数组),那么使用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]

请记住splice修改,切片访问。作为第一个arg的负数表示从数组末尾开始的索引。

答案 3 :(得分:8)

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

官方文件: Array.prototype.length

答案 4 :(得分:5)

如果您既要获取元素,也要从数组中删除元素,请使用splice

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

答案 5 :(得分:2)

如果要有选择地从数组中提取元素,可以使用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(", "));