Después de raspar una tabla html, almacené mis datos en la variable:
var data = ["header1", "header2", "a1", "a2", "b1", "b2", "c1", "c2"];Quiero crear un archivo json en la forma:
var json = [ { "header1":"a1", "header2":"a2" }, { "header1":"b1", "header2":"b2" }, { "header1":"c1", "header2":"c2" } ]se que necesito
var headers={};y cargarlo con
headers["header1"] headers["header2"]Yo también necesito
var jsonObj = [];y empuje los encabezados de matriz dentro de jsonObj:
jsonObj.push(headers);¿Es posible crearlo?
Haré algunas suposiciones y luego intentaré responder a su pregunta.
Para mí, parece que tu tabla se parece a:
| encabezado1 | encabezado2 |
|---|---|
| a1 | a2 |
| b1 | b2 |
| c1 | c2 |
Simplemente comenzando con la matriz que ya tiene, podemos seleccionar dos y dos valores a la vez. Ver el código a continuación
const COLUMN_COUNT = 2 const data = ["header1", "header2", "a1", "a2", "b1", "b2", "c1", "c2"] // this removes the headers from the data-list, // and stores them in the headers variable const headers = data.splice(0, COLUMN_COUNT) const output = [] while(data.length > 0) { const row = {} const values = data.splice(0, COLUMN_COUNT) for(const [idx, value] of values.entries()) { const header = headers[idx] row[header] = value } output.push(row) } console.log(output)En realidad, no existe una relación entre el encabezado y los valores, pero suponiendo que los dos primeros elementos sean siempre header1 and header2 y que el siguiente par sea el valor del encabezado 1 y el encabezado 2 respectivamente, esto podría funcionar.
const data = ["header1", "header2", "a1", "a2", "b1", "b2", "c1", "c2"]; const res = []; const h1 = data[0]; const h2 = data[1]; data.splice(0, 2); for (let i = 0; i < data.length; i++) { if (i % 2 != 0) { const payload = {}; payload[h1] = data[i - 1]; payload[h2] = data[i]; res.push(payload); } } console.log(res)