Estoy trabajando con Javascript (ES6) / FaceBook react y estoy tratando de obtener los primeros 3 elementos de una matriz que varía en tamaño. Me gustaría hacer el equivalente de Linq take (n).
En mi archivo Jsx tengo lo siguiente:
var items = list.map(i => {
return (
<myview item={i} key={i.id} />
);
});
Luego para obtener los primeros 3 elementos que probé
var map = new Map(list);
map.size = 3;
var items = map(i => {
return (<SpotlightLandingGlobalInboxItem item={i} key={i.id} />);
});
Esto no funcionó ya que el mapa no tiene una función establecida.
¿Puedes por favor ayudarme?
javascript
reactjs
usuario1526912
fuente
fuente
list.slice(0, 3);
y luego repetirlo?Respuestas:
Creo que lo que estás buscando es:
fuente
Para obtener los primeros
n
elementos de una matriz, usefuente
slice
función en las matrices devuelve una copia superficial de la matriz y no modifica la matriz original. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…Esto puede ser sorprendente, pero la
length
propiedad de una matriz no solo se usa para obtener el número de elementos de la matriz, sino que también se puede escribir y se puede usar para establecer la longitud del enlace MDN de la matriz . Esto mutará la matriz.Si ya no se necesita la matriz actual y no le importa la inmutabilidad o no desea asignar memoria, es decir, para un juego, la forma más rápida es
para vaciar una matriz
fuente
arr = []
?No intentes hacerlo usando una función de mapa. La función de mapa debe usarse para asignar valores de una cosa a otra. Cuando el número de entrada y salida coincide.
En este caso, utilice la función de filtro que también está disponible en la matriz. La función de filtro se utiliza cuando desea tomar valores selectivamente mecanizando ciertos criterios. Entonces puedes escribir tu código como
fuente
Puede filtrar usando la
index
matriz.fuente
.filter
por sí solo no es una gran opción, al menos no si la matriz de entrada puede ser larga..filter
pasa por cada elemento de la matriz verificando su condición..slice
no haría esto, sino que simplemente extraería los primeros n elementos y luego detendría el procesamiento, que definitivamente sería lo que desea para una larga lista. (Como @elQueFaltaba ya dijo en comentarios a otra respuesta.)Lo siguiente funcionó para mí.
Aquí hay un ejemplo
fuente
slice
pero en el segundo que usasplice
.["Apple", "Mango"]
de esto. La primera parte del segmento no es "dónde comenzar a eliminar", es dónde comenzar el segmento. No modifica la matriz original y no eliminará nada.Con https://github.com/Siderite/LInQer puede Enumerable.from (list) .take (3) .toArray ();
fuente
Usar filtro
No es la mejor práctica, sino de otra manera.
const cutArrByN = arr.filter((item, idx) => idx < n);
fuente