Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

168
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!