Linq tiene un método de operador conveniente llamado Take() para devolver un número dado de elementos en cualquier cosa que implemente IEnumerable. ¿Hay algo similar en jQuery para trabajar con matrices?

114
Alan Le 5 jun. 2009 a las 01:01

6 respuestas

La mejor respuesta

Hay un slice método

array.slice(0, 4);

Devolverá los primeros cuatro elementos.

No olvide asignarlo nuevamente a su variable si desea descartar los otros valores.

Nota: Esto es solo JavaScript normal, no es necesario usar jquery.

170
David Mason 21 may. 2015 a las 01:37

Si está preguntando cómo truncar (modificar una matriz eliminando los elementos del final), use empalme:

var a1 = [2,4,6,8];
var a2 = a1.splice(-2,2); // a1=[2,4], a2=[6,8]

Si está preguntando cómo recuperar un subconjunto de una matriz sin modificar el original, use rebanada.

var a1 = [2,4,6,8];
var a2 = a1.slice(-2); // a1=[2,4,6,8], a2=[6,8]

Solo recuerda que el empalme modifica, corta los accesos. Los números negativos como primer argumento indican el índice desde el final de la matriz.

21
Jacob 30 mar. 2016 a las 17:58

(2 años después ...) Si realmente está buscando truncar una matriz, también puede usar el atributo length:

var stooges = ["Moe", "Larry", "Shemp", "Curly", "Joe"];
stooges.length = 3; // now stooges is ["Moe", "Larry", "Shemp"]

Nota: si asigna una longitud que es más larga que la longitud actual, se introducen elementos de matriz indefinidos, como se muestra a continuación.

var stooges = ["Moe", "Larry", "Shemp"];
stooges.length = 5;
alert(typeof stooges[4]); // alerts "undefined"

Editar:

Como @twhitehead menciona a continuación, la adición de elementos indefinidos se puede evitar haciendo esto:

var stooges = ["Moe", "Larry", "Shemp"];
stooges.length = Math.min(stooges.length, 5); 
alert(stooges.length)// alerts "3"
117
Jonathan M 24 ene. 2018 a las 19:37

Si desea extraer elementos de una matriz de forma selectiva, puede usar jQuery.grep método.

(de los documentos de 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(", "));
2
Pier-Luc Gendreau 12 ene. 2015 a las 03:32

Si desea obtener los elementos y eliminarlos de la matriz, use empalme.

Si desea mantener los elementos en la matriz, use slice

5
PatrikAkerstrand 4 jun. 2009 a las 21:06

Establezca la propiedad .length en un valor inferior.

Documentación oficial: Array.prototype.length

10
Brad Koch 26 jun. 2015 a las 14:56