Sé que hay un montón de las mismas preguntas, pero realmente no entiendo cómo abordar esto de manera diferente a esto. Realmente necesito una matriz de objetos para estar dentro de un mapa, hice una matriz para mapearlo pero necesito encontrar información diferente para mostrar, así que hice una búsqueda en una matriz de objetos dentro del mapa. ¿De qué otra forma puedo hacer esto que no sea con objetos?
tengo una matriz:
itemInfoObjTemp = ["lst_price", "qty_available", "qty_availible_diff"]
y tengo una matriz de objetos:
itemInfoObjTemp2 = Array [ Object { "field_description": "Javna cijena", "id": 2089, "name": "lst_price", }, Object { "field_description": "Fizička zaliha", "id": 3774, "name": "qty_available", }, Object { "field_description": "Reserved Qty", "id": 10970, "name": "qty_availible_diff", }, ]
y estoy tratando de mostrar field_description
como etiqueta, pero obtengo:
Los objetos no son válidos como hijos de React (encontrado: objeto con claves {id, field_description, name}). Si tenía la intención de representar una colección de niños, use una matriz en su lugar.
{itemInfoObjTemp.map((item, index) => ( <Text key={index}> <Text style={{ fontWeight: 'bold' }}> {itemInfoObjTemp2.find(item2 => item2.name === item ? item2.field_description : item )} : </Text>{' '} {itemInfoObj[item].toString()} </Text> ))}
toda esta información es dinámica desde la API, incluidas las propiedades de los objetos, por lo que no es posible codificar.
Consulte los documentos de find()
aquí .
Afirman que "devuelve el primer elemento de la matriz proporcionada que satisface la función de prueba proporcionada". Esto significa que cuando llamas a find()
, estás recibiendo un objeto de vuelta.
En su lugar, prueba algo como:
<Text style={{ fontWeight: 'bold' }}> {itemInfoObjTemp2.find(item2 => item2.name === item)?.field_description} </Text>
Así que lo resolví con el índice:
{itemInfoObjTemp.map((item, index) => ( <Text key={index}> <Text style={{ fontWeight: 'bold' }}> {itemInfoObjTemp2[index].field_description}: </Text>{' '} {itemInfoObj[item].toString()} </Text> ))}
Pero esto es ridículo. Esto solo funcionará si las matrices tienen la misma longitud y están en el orden correcto. En mi caso por suerte siempre lo harán, pero realmente debería tener otras opciones más seguras...