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

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

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 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!