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
nelementos de una matriz, usefuente
slicefunció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
lengthpropiedad 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
indexmatriz.fuente
.filterpor sí solo no es una gran opción, al menos no si la matriz de entrada puede ser larga..filterpasa por cada elemento de la matriz verificando su condición..sliceno 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
slicepero 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