Как легко обрезать массив с помощью JavaScript? - PullRequest
79 голосов
/ 05 июня 2009

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

Ответы [ 6 ]

143 голосов
/ 05 июня 2009

Существует метод срез

array.slice(0, 4);

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

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

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

108 голосов
/ 03 августа 2011

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

EDIT:

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

var stooges = ["Moe", "Larry", "Shemp"];
stooges.length = Math.min(stooges.length, 5); 
alert(stooges.length)// alerts "3"
21 голосов
/ 05 июня 2009

Если вы спрашиваете, как усечь (изменить массив, удалив элементы с конца), тогда используйте 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]

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

8 голосов
/ 27 марта 2015

Установить для свойства .length более низкое значение.

Официальная документация: Array.prototype.length

5 голосов
/ 05 июня 2009

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

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

2 голосов
/ 05 июня 2009

Если вы хотите выборочно извлечь элементы из массива, вы можете использовать метод 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(", "));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...