Tengo una matriz de objetos y quiero convertirlos en objetos separados por comas.
let arr = [{name:"k"},{name:"p"}]; console.log(...arr.join(',')); Obtengo este [ object O bject ] , [ object O bject ] Quiero en este formato {name:"k"},{name:"p"} .
La conversión predeterminada de objetos simples a cadenas da como resultado "[object Object]" . (Más información sobre por qué obtuvo el resultado específico que obtuvo a continuación). Si desea algo diferente, debe hacerlo con su propio código.
Por ejemplo, podría usar map para convertir los objetos en cadenas y luego usar join en el resultado:
const result = arr.map(({name}) => `{name: ${JSON.stringify(name)}`).join(",");Ejemplo en vivo:
let arr = [{name:"k"},{name:"p"}]; const result = arr.map(({name}) => `{name: ${JSON.stringify(name)}}`).join(","); console.log(result); Eso solo hace una propiedad específica, por supuesto. Si desea incluir otros, necesitará una operación de bucle/mapeo en la devolución de llamada del map (tal vez comenzando con Object.entries en el objeto).
const result = arr.map(obj => { const props = Object.entries(obj).map(([name, value]) => `${name}: ${JSON.stringify(value)}`); return `{${props}}`; }).join(",");Ejemplo en vivo:
let arr = [{name:"k"},{name:"p"}]; const result = arr.map(obj => { const props = Object.entries(obj).map(([name, value]) => `${name}: ${JSON.stringify(value)}`); return `{${props}}`; }).join(","); console.log(result); Si no le importan las comillas alrededor de los nombres de las propiedades, entonces, como dijo Shobe , puede hacerlo aplicando JSON.stringify a todo el objeto.
const result = arr.map(obj => JSON.stringify(obj)).join(",");Pero su pregunta no mostraba comillas alrededor de los nombres de las propiedades.
Ejemplo en vivo:
let arr = [{name:"k"},{name:"p"}]; const result = arr.map(obj => JSON.stringify(obj)).join(","); console.log(result);Por qué obtuviste el resultado específico que obtuviste:
Inicialmente me sorprendió el resultado que obtuviste, pero tiene sentido después de pensarlo un momento: tu código hace console.log(...arr.join(",")) , que hace esto:
join en arr , que combina sus entradas en una cadena utilizando su comportamiento predeterminado de conversión a cadena, con una sola coma en el medio.console.log como si hubieras escrito console.log("[", "o", "j" etc.¡Por que no! simplemente gírelo al formato JSON , luego elimine los corchetes abiertos o cerrados :
let arr = [{name:"k"},{name:"p"}]; console.log(JSON.stringify(arr).replace(/\[|\]/g,'')) Resultado como se esperaba: {"name":"k"},{"name":"p"}