tengo un codigo javascript
var jsString1 = []; var jsString = []; var val1, val2; val1 = "test1"; val2 = "test2"; jsString1.push("key1"); jsString1.push(val1); jsString1.push("key2"); jsString1.push(val2); jsString.push(jsString1); alert(JSON.stringify(jsString));esto dará el resultado como estos
// current output [["key1","test1","key2","test2"]]pero necesito hacer uno como estos
// needed output [{"key1":"test1","key2":"test2"}]Cómo puedo hacerlo ? Por favor ayúdenme y gracias de antemano.
Normalmente, solo harías
jsString1.push({ "key1": val1 "key2": val2 })Su código solo se inserta en la matriz.
Primero debe crear un objeto y luego agregar el objeto a la matriz.
Tiene una matriz de matrices de claves y valores [[key, value, key, value]] . Si la matriz tuviera la forma de [[key, value], [key, value], ...] (entradas), podríamos usar Object.fromEntries() para convertirlo en un objeto.
Para transformar la matriz de entradas original, asigne la matriz, use Array.from() para convertir sub-matrices en tuplas de [key, value] y luego use Array.flat() para convertir la matriz 3d en una matriz 2d de entradas:
const toEntries = arr => arr.map(subArr => Array.from({ length: subArr.length / 2 }, (_, i) => subArr.slice(i * 2, i * 2 + 2) ) ).flat(1) const arr = [["key1","test1","key2","test2"]]; const obj = Object.fromEntries(toEntries(arr)) console.log(JSON.stringify(obj));