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 construir/transformar un objeto a partir de un objeto anterior

Estoy tratando de crear un objeto en una determinada estructura a partir de los datos que tengo. De:

 // example #1 const dataGender = {"male": 30, "female": 70} // example #2 const dataFruits = {"apple": 10, "banana": 20, "strawberry": 200}

a:

 const resultGender = { "data": [ { "value": 30, "label": { "en": "male"} }, { "value": 70, "label": { "en": "female"} } ] } const resultFruits = { "data": [ { "value": 30, "label": { "en": "apple"} }, { "value": 20, "label": { "en": "banana"} }, { "value": 200, "label": { "en": "strawberry"} } ] }

En otras palabras, una función que acepta dataGender y devuelve resultGender , y lo mismo ocurre con dataFruits .

Como se puede ver arriba, la estructura es consistente y los únicos cambios son en los valores bajo las claves "value" y "en" .

Encontré el ramda objOf() de ramda que me acerca:

 const R = require("ramda") const buildObject = R.compose( R.objOf("data"), R.map(R.objOf("value")) ); buildObject([30, 70]); // => {"data": [{"value": 30}, {"value": 70}]}

Pero todavía me falta cómo construir la parte textual debajo de "en" .

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

0

Convierta el objeto en pares de [key, value] y asígnelos a un nuevo objeto usando R.applySpec . Use R.nth para tomar la clave o el valor del par. Use R.objOf para anidar la matriz en data .

 const { pipe, toPairs, map, applySpec, nth, objOf } = R const fn = pipe( toPairs, map(applySpec({ value: nth(1), label: { en: nth(0) } })), objOf('data') ) // example #1 const dataGender = {"male": 30, "female": 70} // example #2 const dataFruits = {"apple": 10, "banana": 20, "strawberry": 200} console.log(fn(dataGender)) console.log(fn(dataFruits))
 .as-console-wrapper {max-height: 100% !important; top: 0}
 <script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.28.0/ramda.min.js" integrity="sha512-t0vPcE8ynwIFovsylwUuLPIbdhDj6fav2prN9fEu/VYBupsmrmk9x43Hvnt+Mgn2h5YPSJOk7PMo9zIeGedD1A==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

El comportamiento principal es tomar un objeto, convertirlo en pares y luego aplicar una especificación a cada par. Podemos extraer esto a una función ( mapSpec ), y luego construir una función específica con ella:

 const { curry, map, toPairs, applySpec, pipe, nth, objOf } = R const mapSpec = curry((spec, obj) => map( applySpec(spec), toPairs(obj) )) const fn = pipe( mapSpec({ value: nth(1), label: { en: nth(0) } }), objOf('data') ) // example #1 const dataGender = {"male": 30, "female": 70} // example #2 const dataFruits = {"apple": 10, "banana": 20, "strawberry": 200} console.log(fn(dataGender)) console.log(fn(dataFruits))
 .as-console-wrapper {max-height: 100% !important; top: 0}
 <script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.28.0/ramda.min.js" integrity="sha512-t0vPcE8ynwIFovsylwUuLPIbdhDj6fav2prN9fEu/VYBupsmrmk9x43Hvnt+Mgn2h5YPSJOk7PMo9zIeGedD1A==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

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