Estoy recorriendo una serie de objetos, luego, según una condición, muestro esa fila en una Tabla u otra. Sin embargo, cuando llamo a esa condición, el objeto reacciona como me gustaría (se muestra en la Tabla 1), pero en la Tabla 2 también se imprime un número. El siguiente es un ejemplo de fragmento. los archivos contienen una matriz de objetos, persona . Si la persona es masculina , se agregan a una matriz y esa matriz se pasa a un componente separado y se representa en otro lugar. Esto funciona. Si la persona no es hombre, se devuelven en la tabla debajo de la condición.
<tbody> {props.files.map(person=> ( <div> {(person.gender === "male") ? maleArray.push(person) : <tr> <td>{person.name}</td> <td>{person.age}</td> </tr> } </div> ))} </tbody> El problema es que cada vez que se detecta un macho, no se muestra en la tabla de hembras, sino que se imprime un número en su lugar. Por ejemplo,
| Nombre | Años |
|---|---|
| María | 51 |
| 1 | |
| jane | 19 |
La tabla masculina funciona como se esperaba, pero si se detecta un macho en el bucle, obtengo esta salida en la tabla femenina.
EDITAR: la tabla se está imprimiendo de forma extraña en la versión final. Se vería algo como esto
Nombre Edad
María 51
1
Juana 19
En JSX, usa el operador ternario, SIEMPRE devuelve el valor cuando finaliza la ejecución, y ese valor devuelto se pasa a un marcado. Entonces, cuando un ciclo se ejecuta en la tabla "femenina", junto con los nombres femeninos, muestra el resultado del método de inserción de ejecución en una matriz en lugar de los nombres masculinos, que es una longitud de matriz, es por eso que ve números enteros en una tabla. Intente separar los nombres masculinos y femeninos en un componente, no en JSX, y luego no hay necesidad de poner una condición en JSX
Array.Map realiza una acción en cada elemento de la matriz y toma el valor devuelto.
maleArray.push(person) devuelve 1 si tiene éxito, por lo que se representa 1 en lugar de los valores.
Podría crear una matriz masculina y una femenina dentro de un forEach-loop y mapear esas matrices en su lugar.