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

150
Visualizações
Transformar matriz de cadenas en objeto

Dados los siguientes valores:

 const values = ['name1|engine1|color1', 'name2|engine2|color2', 'name3|engine3|color3']

Me gustaría crear una matriz para los valores de la misma posición, así:

 cars = { names: ['name1', 'name2', 'name3'], engines: ['engine1', 'engine2', 'engine3'], colors: ['color1', 'color2', 'color3'], ...other properties }

Traté de hacerlo de esta manera:

 values.reduce((acc, value) => { const [name, engine, color] = value.split('|') acc.names.push(name) acc.engines.push(engine) acc.colors.push(color) return acc }, {})

El problema es que acc.name, acc.engine y acc.color aún no existen, y da un error al presionar. ¿Cuál sería una forma de hacer esto limpiamente, teniendo en cuenta que tendrán otras propiedades?

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

  • Caso 1.

 const values = [ "name1|engine1|color1", "name2|engine2|color2", "name3|engine3|color3" ]; const cars = { names: [], engines: [], colors: [] }; const result = values.reduce((acc, value) => { const [name, engine, color] = value.split("|"); acc.names.push(name); acc.engines.push(engine); acc.colors.push(color); return acc; }, cars); console.log(result);

  • Caso2.

 const values = [ "name1|engine1|color1", "name2|engine2|color2", "name3|engine3|color3" ]; const result = values.reduce((acc, value) => { const [name, engine, color] = value.split("|"); (acc.names ??= []).push(name); (acc.engines ??= []).push(engine); (acc.colors ??= []).push(color); return acc; }, {}); console.log(result);

about 4 years ago · Juan Pablo Isaza Relatório

0

Si tiene nombres de propiedad muy largos, también puede hacer esto:

 const values = [ "name1|engine1|color1", "name2|engine2|color2", "name3|engine3|color3" ]; const keys = ["names", "engines", "colors", ...]; const results = values.reduce((acc, value) => { const segments = value.split("|"); keys.forEach((key, index) => { (acc[key] ??= []).push(segments[index]); }); return acc; }, {}); console.log(results)
about 4 years ago · Juan Pablo Isaza Relatório

0

Object.fromEntries hace que esto sea fácil de hacer en una simple llamada de map :

 const reconstruct = (names, values) => values .map (v => Object .fromEntries (v .split ('|') .map ((v, i) => ([names[i], v])))) console .log (reconstruct ( ['name', 'engine', 'color'], [ 'name1|engine1|color1', 'name2|engine2|color2', 'name3|engine3|color3' ]))
 .as-console-wrapper {max-height: 100% !important; top: 0}

Convertimos cada una de nuestras cadenas en algo como [['name', 'name1'], ['engine', 'engine1'], ['color', 'color1']] luego llamamos a Object.fromEntries en eso.

about 4 years ago · Juan Pablo Isaza 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