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

164
Views
Cómo encontrar la ruta más larga posible a partir de una matriz de objetos

Estoy construyendo una API que necesita encontrar la ruta más larga que coincida con un número de una manera muy eficaz.

p.ej

 // API Request { 'number': '123456789' } // DATA [ { 'prefix': '1', 'price': 30.5 }, { 'prefix': '123', 'price': 10.5 }, { 'prefix': '12345', 'price': 22.5 }, ] // API RESPONSE { 'prefix': '12345', 'price': 22.5 },

Como puede ver arriba, la respuesta debe ser la fila con el prefijo 12345, ya que es la más larga. por favor necesito un poco de ayuda para hacer esto. Pasé aproximadamente 2 días buscando una solución, así que decidí venir a Stack Overflow para obtener respuestas. ¡Gracias por adelantado!

about 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Puede hacer lo siguiente donde verifica la posición de cada carácter en el prefijo para determinar qué conjunto de datos es el que mejor coincide.

 const incoming = { 'number': '123456789' } const data = [{ 'prefix': '1', 'price': 30.5 }, { 'prefix': '123', 'price': 10.5 }, { 'prefix': '12345', 'price': 22.5 } ]; let bestMatch = { matchSuccess: 0, data: data[0] }; for (let i = 0; i < data.length; i++) { let matchSuccess = 0; for (var x = 0; x < data[i].prefix.length; x++) { const c = data[i].prefix.charAt(x); if (data[i].prefix.charAt(x) === incoming.number.charAt(x)) { matchSuccess++; } } if (matchSuccess > bestMatch.matchSuccess) { bestMatch = { matchSuccess, data: data[i] } } } console.log(bestMatch);

about 4 years ago · Santiago Trujillo Report

0

Del comentario anterior...

"El OP no está buscando ... "la ruta más larga posible desde una matriz de objetos" ... lo que, con suerte, no solo para mí significa un resultado como ... 'data[2].prefix' ... para . .. const incoming = { prefix: '123456789' } .El valor incoming proporcionado por el OP incluso no coincidiría con nada debido al number: '123456789' par clave-valor (por cierto, el number es un tipo de cadena) en lugar del prefix: '123456789' . Recomiendo encarecidamente editar el tema y la descripción del problema".

Pero lo que el OP realmente podría querer es ... filtrar, de una matriz de objetos, el primer objeto donde cualquiera de los valores en cadena de la entrada del objeto coincida con el valor en cadena de la llamada API de la manera más larga posible.

 function collectItemOfBestCoveringEntryValue(collector, item) { const { search = '', coverage = 0, result = null } = collector; if (search !== '') { const matchingValues = Object // retrieve all of an item's values. .values(item) // filter any value which matches `search`. .filter(value => { value = String(value); return (( value !== '' ) && ( // it might even goe both ways ... // ... `value` in `search` ... search.includes(value) || // ... or `search` in `value`. value.includes(search) )); }); // retrieve the longest (stringified) value's length. const bestCoverage = String( matchingValues .sort((a, b) => b.length - a.length)[0] ?? '' ).length; if (bestCoverage > coverage) { collector.coverage = bestCoverage; collector.result = item; } } return collector; } const serverSideData = [{ 'prefix': '1', 'price': 30.5, }, { 'prefix': '123', 'price': 10.5, }, { 'prefix': '12345', 'price': 22.5, }]; const apiRequest = { value: '123456789', // or even // value: 123456789, }; const apiResponse = serverSideData .reduce(collectItemOfBestCoveringEntryValue, { search: String(apiRequest.value), result: null, }).result; console.log({ apiResponse });
 .as-console-wrapper { min-height: 100%!important; top: 0; }

about 4 years ago · Santiago Trujillo 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!