Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

155
Visualizações
¿Cómo convierto una matriz de objetos en una cadena separada por tabuladores?

Tengo una serie de objetos similares a los siguientes:

 const data = [ { "name": "Amsterdam", value: 40000, uniqueId: '2432g53122141' }, { "name": "New York", value: 200000, uniqueId: '24322141' }, { "name": "Mumbai", value: 5000, uniqueId: '9999' } ]

Quiero convertirlo al siguiente formato usando cadenas separadas por tabulaciones con el formato/alineación adecuado similar al siguiente.

Es necesario que sea una cadena, ya que enviaré estos datos a un formulario de terceros que solo acepta texto y no datos HTML.

 Name Value UniqueId Amsterdam 40000 243253122141 New York 200000 24322141 Mumbai 5000 9999

¿Cómo puedo lograr lo mismo con el formato adecuado para que no haya problemas de alineación ya que la longitud de los datos para cada propiedad puede variar como se puede ver arriba? ¿Hay algún paquete disponible?

about 4 years ago · Santiago Gelvez
3 Respostas
Responde à pergunta

0

  • Recorra la matriz y recopile la longitud máxima para cada propiedad en un objeto.
  • Luego recorra la matriz -> padEnd los valores a la longitud máxima para esa clave -> join con \t obtenga cada valor de fila. Repita las propiedades en el mismo orden que el objeto maxLength en caso de que falten las propiedades o estén en un orden diferente
  • Luego, join cada fila con un \n para obtener el cuerpo de la tabla.
  • Une los encabezados y el cuerpo con un \n para obtener el resultado.

Esto funciona para cualquier cantidad de propiedades, propiedades faltantes, propiedades en diferente orden, valores nulos

 const data = [ { "name": "Amsterdam", value: 40000, uniqueId: '2432g53122141' }, { "name": "New York", value: 200000, uniqueId: '24322141' }, { "name": "Mumbai", value: 5000, uniqueId: '9999' } ] const maxLength = {} for (const o of data) { for (const key in o) maxLength[key] = Math.max(maxLength[key] ?? 0, String(o[key] ?? '').length) } console.log(maxLength) const headers = Object.entries(maxLength) .map(([k, length]) => k.padEnd(length)) .join("\t") const rows = data.map(o => Object.entries(maxLength) .map(([k, length]) => String(o[k] ?? '').padEnd(length)) .join('\t') ).join('\n') console.log( [headers, rows].join('\n') )

about 4 years ago · Santiago Gelvez Relatório

0

puedes hacer algo como esto

 const data = [ { "name": "Amsterdam", value: 40000, uniqueId: '2432g53122141' }, { "name": "New York", value: 200000, uniqueId: '24322141' }, { "name": "Mumbai", value: 5000, uniqueId: '9999' } ] const header = Object.keys(data[0]) const rows = [header, ...data.map(d => Object.values(d))] const maxLength = Math.max(...rows.flat().map(s => s.toString().length)) const result = rows.map(d => d.map(s => s.toString().padEnd(maxLength, ' ')).join('\t')).join('\n') console.log(result)

about 4 years ago · Santiago Gelvez Relatório

0

Este es solo un ejemplo de cómo podrías hacerlo. Podría leer todos los atributos del json y luego intentar generar las líneas. Para hacer la identificación, tomé la cadena más grande en json y la usé como longitud de identificación.

 function tabify(data) { var columns=new Set() //Get all the colums for(var index in data){ for(var iKey in Object.keys(data[index])) columns.add(Object.keys(data[index])[iKey]) } var maxLength = 0 //Search maxLength for (var index in data) { columns.forEach((element) => { if (maxLength < element.length) maxLength = element.length if (maxLength < data[index][element].length) maxLength = data[index][element].length }); } var outText = "" //Generate column line columns.forEach((element) => { outText += element outText += Array((maxLength - element.length) + 1).join(" ") }); outText += "\n" //Generate the text formated for (var index in data) { columns.forEach((element) => { outText += data[index][element] outText += Array((maxLength - (data[index][element].toString()).length) + 1).join(" ") }); outText += "\n" } return outText } let dataJson = [{ "name": "Amsterdam", value: 40000, uniqueId: '2432g53122141' }, { "name": "New York", value: 200000, uniqueId: '24322141' }, { "name": "Mumbai", value: 5000, uniqueId: '9999' } ] text = tabify(dataJson) console.log(text)

about 4 years ago · Santiago Gelvez Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda