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

142
Views
¿Cómo aplicar la composición de funciones o canalizaciones en la función de parámetros múltiples?

En una entrevista, me pidieron que presionara los puntos finales jsonplaceholder /posts y /comments y escribiera una función que devolviera comentarios coincidentes con publicaciones donde comment.postId == post.id y luego crear un objeto JSON completo que contuviera la publicación dentro de los comentarios. eso.

He estado tratando de implementarlo en un enfoque funcional, pero no puedo encontrar una manera de tratar con 2 matrices (2 entradas) como tuberías, composiciones, transductores, todos aceptan funciones unarias.

Incluso pensé en tener dos canales, uno para procesar los comentarios y otro para las publicaciones y unir sus flujos de trabajo al final, pero no pude implementarlo.

Todo lo que se me ocurrió es mapear los comentarios en sí mismos para que sean una matriz de objetos donde tiene postId como un número que representa cada publicación y comments como una matriz de cadenas.

 import axios from 'axios' import _ from 'ramda' const { data: comments } = await axios.get( 'http://jsonplaceholder.typicode.com/comments', ) const cIds = (comments) => _.pipe( _.groupBy(_.prop('postId')), _.map(_.pluck('body')), _.map(_.flatten), _.map(_.uniq), _.toPairs, _.map(_.zipObj(['postId', 'comments'])), )(comments) console.log(cIds(comments))

Entonces, ¿alguien tiene una idea de cómo hacerlo de manera funcional?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Creo que me estoy perdiendo algo en la pregunta. Esto suena como una función bastante simple. Podría escribirlo algo como esto:

 const consolidate = ([posts, comments]) => posts .map (p => ({ ...p, comments: comments .filter (c => c.postId == p.id) })) const fullPosts = (postUrl, commentUrl) => Promise .all ([axios .get (postUrl), axios .get (commentUrl)]) .then (consolidate) fullPosts ( 'https://jsonplaceholder.typicode.com/posts', 'https://jsonplaceholder.typicode.com/comments' ) .then (console .log, console .warn)
 .as-console-wrapper {max-height: 100% !important; top: 0}
 <script>const axios = {get: (url) => fetch (url) .then (r => r .json ())} // dummy axios</script>

Soy uno de los fundadores de Ramda y un gran admirador, pero no sé si ofrece mucho aquí.

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!