Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

274
Vistas
¿Cómo hacerlo sin puntos cuando hay una variable local?

Tengo un fragmento de código para eliminar la parte del host de la URL del servidor en la definición de OpenAPI. No sé cómo hacerlo totalmente libre de puntos. (No es necesario hacer eso. Pero solo quiero saber cómo hacerlo).

La parte difícil para mí es deshacerme de la variable local idx . Leí este SO y parece que ap puede resolver. No lo intenté porque no hay ap en lodash.

 const convert = _.flow([ _.split('/'), (segments) => { const idx = _.findLastIndex(containAny(['{', '}', ':']))(segments); return _.drop(idx+1, segments); }, _.reject(_.isEmpty), _.join('/'), path => '/' + path, ]);

Código completo:

 const _ = require('lodash/fp'); const urls = [ 'http://localhost:8080/petstore/v1', '//localhost/petstore/v1', '{server}/batch-service/api/batches/lwm2m/v1', 'https://{server}/batch-service/api/batches/lwm2m/v1', '/batch-service/api/batches/lwm2m/v1', '/', ] const containAny = patterns => str => _.some(pattern => _.includes(pattern, str), patterns); const convert = _.flow([ _.split('/'), (segments) => { const idx = _.findLastIndex(containAny(['{', '}', ':']))(segments); return _.drop(idx+1, segments); }, _.reject(_.isEmpty), _.join('/'), path => '/' + path, ]); _.map(convert)(urls);
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

En su caso, debe llamar a _.findLastIndex() en los segments y luego llamar a _.drop() en los resultados de la búsqueda y los segments :

 drop(findLastIndex(segments))(segments)

Lo que es equivalente a la función combinadora de cadena :

 const chain = f => g => x => f(g(x))(x);

Lodash/fp acepta todas las funciones cuando usa _.flow() (que también es un combinador funcional), por lo que puede crear otros combinadores funcionales y usarlos.

 const chain = f => g => x => f(g(x))(x); const containAny = patterns => str => _.some(pattern => _.includes(pattern, str), patterns); const findLastSegmentIndex = _.flow( _.findLastIndex(containAny(['{', '}', ':'])), _.add(1) ) const convert = _.flow([ _.split('/'), chain(_.drop)(findLastSegmentIndex), _.reject(_.isEmpty), _.join('/'), path => '/' + path, ]); const urls = [ 'http://localhost:8080/petstore/v1', '//localhost/petstore/v1', '{server}/batch-service/api/batches/lwm2m/v1', 'https://{server}/batch-service/api/batches/lwm2m/v1', '/batch-service/api/batches/lwm2m/v1', '/', ]; const result = _.map(convert)(urls); console.log(result);
 <script src='https://cdn.jsdelivr.net/g/lodash@4(lodash.min.js+lodash.fp.min.js)'></script>

about 4 years ago · Juan Pablo Isaza Denunciar

0

Necesitarías converge , que lodash no tiene, pero Ramda sí. Aplica diferentes funciones al mismo argumento y luego usa el resultado de estas aplicaciones como argumentos para otra función dada.

 const convert = _.flow([ _.split('/'), R.converge(_.drop, [_.flow([_.findLastIndex(containAny(['{', '}', ':'])), add(1)]), _.identity]), _.reject(_.isEmpty), _.join('/'), path => '/' + path, ]);

https://ramdajs.com/docs/#converge

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda