Tengo una matriz de objetos y estoy tratando de interpolar datos en una nueva matriz.
Esta es la matriz, que podría tener dos o más objetos:
const param = [{ sortType: "ascending", sortField: "id", }, { sortType: "descending", sortField: "title", }, ]; let sortFields = []; let sortTypes = []; let sortString = []; //iterates the sort params for (let p of param) { sortFields.push(p.sortField); sortTypes.push(p.sortType); } for (let st of sortTypes) { sortString.push(st === "ascending" ? "+" : "-"); for (let sf of sortFields) { sortString.push(sf); } } console.log({ sortString }) Lo que pretendo hacer es tener una matriz con el siguiente resultado: ["+id","-title"]
Por el momento estoy atascado con dos bucles for interpolados que hacen algo muy diferente. Intenté etiquetar los bucles y usar la palabra clave continue en los bucles internos, pero todavía me da un resultado muy diferente.
¿Alguna sugerencia sobre cómo puedo lograr esto? ¿Tal vez cortando las dos matrices por separado y luego creando un nuevo bucle que interpola y une las cadenas en la matriz?
¡Cualquier ayuda es apreciada!
Estás haciendo demasiados bucles. Simplemente podría usar la función Array.prototype.map :
param.map(el => (el.sortType === 'ascending' ? '+' : '-') + el.sortField)Puede usar Array#map para convertir cada entrada en la cadena que desee.
Si está recorriendo un ciclo y empujando elementos a una matriz, es muy probable que se pueda hacer de una manera más limpia usando Array#map .
const param = [{ sortType: "ascending", sortField: "id", }, { sortType: "descending", sortField: "title", }, ]; const sortString = param.map((p) => { return p.sortType === "ascending" ? `+${p.sortField}` : `-${p.sortField}` }); console.log({ sortString })