Estoy tratando de obtener un resultado como el siguiente para llamar a una consulta SQL. Es una matriz de objetos (cada objeto con una clave, que será VALUE y un valor. El valor debe estar entre comillas simples con una coma al final):
[ { VALUE: 'A', }, { VALUE: 'B', }, { VALUE: 'C', }, { VALUE: 'D', }, { VALUE: 'E', }, { VALUE: 'F' } ]Intenté usar una función for en la que agrego un objeto para cada elemento en una lista. Este es el resultado que obtengo:
Código:
let arr = []; const len = reqBody.values.length; for (let i = 0; i < len; i++) { arr.push( { VALUE: reqBody.values[i] } ) }Resultado:
[ { VALUE: 'A' }, { VALUE: 'B' }, { VALUE: 'C' }, { VALUE: 'D' }, { VALUE: 'E' }, { VALUE: 'F' } ] Intenté usar una función de flecha de map con una join al final para tratar de agregar la coma después de cada valor (por lo que para la segunda línea del código de resultado sería algo como: { VALUE: 'A', } ) pero no puedo hacer que funcione ya que devuelve una serie de cadenas, no objetos como los que necesito.
Este es el código descrito anteriormente:
Código:
let arr = []; const len = reqBody.values.length; for (let i = 0; i < len; i++) { arr.push(Object.values({ VALUE: reqBody.values[i] }).map(v => `{ VALUE: '${v}', }`).join(',')) }Resultado:
[ "{ VALUE: 'A', }", "{ VALUE: 'B', }", "{ VALUE: 'C', }", "{ VALUE: 'D', }", "{ VALUE: 'E', }", "{ VALUE: 'F', }", ]¿Hay alguna forma de convertir esa cadena en la función de mapa para que sea un objeto?
Debe construir todo como una cadena concatenada, no como una matriz.
let reqBody = { values: ['A', 'B', 'C'] }; let items = reqBody.values.map(v => `{ VALUE: '${v}', }`); let result = '[\n ' + items.join(',\n ') + '\n]'; console.log(result);