Estoy tratando de colocar mis valores de _rows en el valor de mi objeto, sin embargo, he intentado ejecutar un ciclo pero no pude obtener los datos, el script que utilicé es
let _columns = ["Name", "age", "phone"] let _rows = [[{ value: 'john' }, { value: '22' }, { value: '999' }], [{ value: 'Bob' }, { value: '21' }, { value: '222' }]] let res = {} for (let i = 0; i < _rows.length; i++) { for (let a = 0; a < _columns.length; a++) { console.log(_rows[i][a].value) } res = _columns.reduce((acc,curr)=> (acc[curr]="data",acc),{}); console.log(res) res = {} }en mi console.log, imprime
La salida objetivo debe ser
{Name: 'john', age: '22', phone: '999'} {Name: 'bob', age: '21', phone: '222'}puedes usar
array.map para construir otra matriz a partir de _rows
valor foreach tienes que comprobar si existen columnas
if (_columns[index]) {en caso afirmativo, agregue en el nuevo objeto el valor debajo del nombre de la columna
res[_columns[index]] = property.value; let _columns = ["Name", "age", "phone"] let _rows = [[{ value: 'john' }, { value: '22' }, { value: '999' }], [{ value: 'Bob' }, { value: '21' }, { value: '222' }]]; let result = _rows.map(one => { let res = {}; one.forEach((property, index) => { if (_columns[index]) { res[_columns[index]] = property.value; } }); return res; }); console.log(result);Si quiere seguir con reduce , solo haga este pequeño cambio para obtener el valor real en lugar de la cadena de código duro "datos". Debe usar el parámetro opcional currentIndex de la devolución de llamada reducida, luego use el índice para acceder al elemento de la fila para el valor.
let _columns = ["Name", "age", "phone"] let _rows = [[{ value: 'john' }, { value: '22' }, { value: '999' }], [{ value: 'Bob' }, { value: '21' }, { value: '222' }]] let res = {} for (let i = 0; i < _rows.length; i++) { for (let a = 0; a < _columns.length; a++) { console.log(_rows[i][a].value) } res = _columns.reduce((acc,curr,index)=> (acc[curr]=_rows[i][index].value,acc),{}); console.log(res) res = {} }Sin embargo, cuando se trata de filas y columnas en su caso, dado que el índice de la matriz es importante, usar el bucle for anidado de la vieja escuela puede ser mucho más claro a veces. Mi experiencia es que, cuando necesite el índice de matriz de todos modos, intente no ser elegante y opte por un bucle for regular.
let _columns = ["Name", "age", "phone"] let _rows = [[{ value: 'john' }, { value: '22' }, { value: '999' }], [{ value: 'Bob' }, { value: '21' }, { value: '222' }]] for(let i = 0; i < _rows.length; i++) { let res = {}; for(let j = 0; j < _columns.length; j++) { res[_columns[j]] = _rows[i][j].value } console.log(res); }Un doble Arry.map hará el truco
let _columns = ["Name", "age", "phone"] let _rows = [ [{ value: 'john' }, { value: '22' }, { value: '999' }], [{ value: 'Bob' }, { value: '21' }, { value: '222' }] ]; const output = _rows.map((row) => row.map((item, index) => ({ [_columns[index]]: item.value }))); console.log(output)