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

169
Vistas
Convertir objeto que contiene objetos en matriz que contiene objetos

Tengo un objeto JSON que a veces será un objeto (una sola instancia) y, a veces, una matriz (múltiples instancias del objeto). Necesito escribir una declaración if que básicamente diga si esta sección de JSON es un objeto, envuélvalo en una matriz que contenga ese único objeto y, si es una matriz que contiene varios objetos, devuelva esa matriz. En cualquier caso, estoy devolviendo una matriz que contiene 1 o varios objetos. Así es como se ve el JSON cuando NO es una matriz.

 "link": { "values": { "key1": "value1", ... "key8": "value8" }, "key9": "value9" }

Y debería verse así cuando es una matriz:

 "link": [{ "values": { "key1": "value1", ... "key8": "value8", }, "key9": "value9" }]

EDITAR ----------------------------- Esto es lo que he escrito hasta ahora que está produciendo el tipo de error que estoy experimentando.

 const isLinkArray = sections.values; isLinkArray.link = Array.isArray(isLinkArray.link) ? isLinkArray.link : [isLinkArray.link];

EDICIÓN 2 ---------------------------

La respuesta final terminó siendo casi idéntica a la respuesta de Kinglish, así que pensé en publicarla aquí. El problema con el que me encontré fue que el JSON justo encima del 'enlace' también era una matriz y eso estaba causando el error de mecanografiado.

 const sectionsWithLinkArray = sections.map((section) => {  return {    values: {      ...section.values,      link: !Array.isArray(section.values.link) ? [section.values.link] : section.values.link,    },  }; });
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Puede usar Array.isArray para verificar, luego convertir

 let data = { "link": { "values": { "key1": "value1", "key8": "value8" }, "key9": "value9" } } data.link = Array.isArray(data.link) ? data.link : [data.link]; console.log(data)

about 4 years ago · Juan Pablo Isaza Denunciar

0

Esto se puede hacer escribiendo una función simple que verifique si es una matriz.

 const returnArray = (value) => { if (Array.isArray(value) { return value; } return }
about 4 years ago · Juan Pablo Isaza Denunciar

0

actualizó la respuesta de @Kinglish a mecanografiado uno porque no puede cambiar los tipos de valor definido, ya que da un error para esto, simplemente ignore el mecanografiado o defina tipos que simplemente acepten el enlace en object y la array of object o simplemente creó una nueva variable que espera un enlace en la matriz y envuélvalo dentro de los datos simplemente haciendo esto:

 const data = { link: { values: { key1: 'value1', key8: 'value8', }, key9: 'value9', }, }; // This is the type of data you can't change it by default and it doesn't expect array of object of `link`. // const data: { // link: { // values: { // key1: string; // key8: string; // }; // key9: string; // }; // }; const linkArray = { link: Array.isArray(data.link) ? data.link : [data.link] }; // Now this is the type of linkArray that expect array of object of `link` // const linkArray: { // link: { // values: { // key1: string; // key8: string; // }; // key9: string; // }[]; // }; console.log('data', data); console.log('linkArray', linkArray);
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