Как легко усечь массив с помощью JavaScript?
Linq имеет удобный метод оператора под названием Take()
чтобы вернуть заданное количество элементов во всем, что реализует IEnumerable
. Есть ли что-нибудь подобное в jQuery для работы с массивами?
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 имеет меньшее значение.
официальной документации: массив.прототип.длина
Если вы хотите выборочно извлекать элементы из массива, вы можете использовать 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(", "));