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

270
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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