Подтвердить что ты не робот

Как легко обрезать массив с помощью JavaScript?

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

4b9b3361

Ответ 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(", "));