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

166
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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