Как легко усечь массив с помощью JavaScript?


Linq имеет удобный метод оператора под названием Take() чтобы вернуть заданное количество элементов во всем, что реализует IEnumerable. Есть ли что-нибудь подобное в jQuery для работы с массивами?

6 61

6 ответов:

есть slice метод

array.slice(0, 4);

вернет первые четыре элемента.

Не забудьте присвоить его в переменную, если вы хотите отказаться от других значений.

Примечание: это просто обычный javascript, нет необходимости в jquery.

(2 года спустя...) Если вы действительно хотите усечь массив, вы также можете использовать :

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"

EDIT:

как @twhitehead упоминалось ниже, добавление неопределенных элементов можно избежать, сделав это:

var stooges = ["Moe", "Larry", "Shemp"];
stooges.length = Math.min(stooges.length, 5); 
alert(stooges.length)// alerts "3"

Если вы спрашиваете, как усечь (изменить массив, удалив элементы из конца), то используйте соединение:

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]

просто помните, что соединение изменяется, доступ к срезу. Отрицательные числа в качестве первого arg указывают индекс от конца массива.

Set .свойство length имеет меньшее значение.

официальной документации: массив.прототип.длина

Если вы хотите как получить элементы, так и удалить их из массива, используйте splice.

Если вы хотите сохранить элементы в массиве, используйте slice

Если вы хотите выборочно извлекать элементы из массива, вы можете использовать jQuery.грэп метод.

(из документов 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(", "));