Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

227
Vistas
typescript - create object from values in array

let's say I have a model definition like this.

export interface Basicdata {
    materialnumber: number;
    type: string;
    materialclass: string;
}

I furthermore have an array with values, which match exactly the order of the Basicdata model, i.e.

["10003084", "S", "CLIP"]

I am searching for a way to create the object from these values in the array. What I did is creating an empty object and assigning the array values.

const singleRow = rows[0];

const newBD: Basicdata = {
 materialnumber: 0,
 type: '',
 materialclass: '',  
}


newBD.materialnumber = singleRow[0];
newBD.type = singleRow[1];
newBD.materialclass = singleRow[2];

But surely there is a better, more elegant way to do that, no? I looked into map and reduce but could find a way.

Thank you.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

As others have mentioned, use a class so that you can use the spread operator (technically you could create a function that returns an objects that meets the interface Basicdata, but you should use a class)

class Basicdata {
  materialnumber: number;
  type: string;
  materialclass: string;

  constructor(materialnumber: string | number, type: string, materialclass: string, ...rest: any) {
    this.materialnumber = typeof materialnumber === "number" ? materialnumber : parseInt(materialnumber);
    this.type = type;
    this.materialclass = materialclass;
  }
}

const rows: [string, string, string][] = [
  ["10003084", "S", "CLIP"],
  ["4324324", "B", "FOUR"],
  ["4444432", "C", "CORN"],
];

const singleRow = rows[0];

const newBD = new Basicdata(...singleRow) ;

Playground link

about 4 years ago · Juan Pablo Isaza Denunciar

0

The issue with the following solution is that it relies on the order of the object properties being consistent. Is this about what you're looking for?

const singleRow = [1, "2", "3"];

const newBD: Basicdata = {
    materialnumber: 0,
    type: "",
    materialclass: "",
};

Object.keys(newBD).map((key, index) => {
    newBD[key] = singleRow[index]
});

If not, you could make a class as others have said, or you can make a helper function likes this, if it would help with your use case.

const addProps = (arr) => {
    const newObj = {
        materialnumber: arr[0],
        type: arr[1],
        materialclass: arr[2],
    };

    return newObj
};

addProps(singleRow)
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda