Linq имеет удобный операторный метод, называемый Take()
, чтобы возвращать заданное число элементов во всем, что реализует IEnumerable
. Есть ли что-то подобное в jQuery для работы с массивами?
Как легко обрезать массив с помощью JavaScript?
Ответ 1
Существует метод slice
array.slice(0, 4);
Вернет первые четыре элемента.
Не забудьте назначить его обратно своей переменной, если вы хотите отменить другие значения.
Примечание. Это просто обычный javascript, без jquery.
Ответ 2
(2 года спустя...) Если вы действительно хотите усечь массив, вы также можете использовать атрибут length
:
var stooges = ["Moe", "Larry", "Shemp", "Curly", "Joe"];
stooges.length = 3; // now stooges is ["Moe", "Larry", "Shemp"]
Примечание: если вы назначаете длину дольше, чем текущая длина, вводятся элементы массива undefined, как показано ниже.
var stooges = ["Moe", "Larry", "Shemp"];
stooges.length = 5;
alert(typeof stooges[4]); // alerts "undefined"
Ответ 3
Если вы спрашиваете, как обрезать (модифицируйте массив, удалив элементы из конца), используйте 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]
Просто помните, что сплайсинг изменяет, разрезает доступ. Отрицательные числа как первый arg указывают индекс от конца массива.
Ответ 4
Задайте свойство .length для более низкого значения.
Официальная документация: Array.prototype.length
Ответ 5
Если вы хотите как получить элементы, так и удалить их из массива, используйте splice.
Если вы хотите сохранить элементы в массиве, используйте slice
Ответ 6
Если вы хотите выборочно вытащить элементы из массива, вы можете использовать метод 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(", "));