quiero hacer un objeto desde una matriz 2D y la salida solo así
{ firstName: 'd', lastName: 'e', gender: 'f' }este es mi codigo
function x(y) { var z = {} for (a = 0; a < y.length; a++) { z.firstName = y[a][0] z.lastName = y[a][1] z.gender = y[a][2] } return z } var y = [ ["a", "b", "c"], ["d", "e", "f"] ] console.log(x(y))¿Qué tiene de malo este código? ¿Por qué se salta la primera línea de la matriz al hacer un bucle?
Debe devolver una matriz de objetos, no un solo objeto que sobrescriba en el bucle.
function x(y) { var result = []; for (let a = 0; a < y.length; a++) { let z = {}; z.firstName = y[a][0]; z.lastName = y[a][1]; z.gender = y[a][2]; result.push(z); } return result; } var y = [ ["a", "b", "c"], ["d", "e", "f"] ] console.log(x(y)) También puedes simplificarlo usando map() .
function x(y) { return y.map(i => ({ firstName: i[0], lastName: i[1], gender: i[2] })); } var y = [ ["a", "b", "c"], ["d", "e", "f"] ] console.log(x(y))Está sobrescribiendo la propiedad dentro del objeto,
verifique el fragmento de código a continuación
function x(y) { const z = [] for (let a = 0; a < y.length; a++) { z.push({ firstName:y[a][0], lastName:y[a][1], gender:y[a][2], }) } return z } var y = [ ["a", "b", "c"], ["d", "e", "f"] ] console.log(x(y))Está sobrescribiendo los valores de z.firstName , z.lastName y z.gender durante su segundo ciclo, un objeto no puede contener valores duplicados
Debería considerar definir z como una matriz y usar el método array.push() .