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

119
Vistas
Devuelve una matriz con los números más cercanos de dos matrices diferentes

EDITAR : aquí hay una reformulación de la pregunta para mayor claridad (disculpas por la confusión):

PREGUNTA: dados los límites de una matriz y una matriz punct_arr donde ambos están ordenados, devuelva una matriz de salida de valores índice_de_separación donde índice_de_separación[i] es el valor más cercano en punct_arr a los límites[i]. De ello se deduce que el índice_de_separación tendrá el mismo tamaño que los límites.


Entonces, digamos que tengo dos matrices:

límites = [280, 560]

punct_arr = [5, 99, 151, 159, 255, 352, 462, 502, 519, 531, 556, 602]

Resultado esperado: [255, 556]

El resultado siempre debe tener la misma longitud que la matriz de límites.

Esto es lo que tengo hasta ahora:

 for (var limit = 0; limit < limits.length; limit++) { for (var punct = 0; punct < punct_arr.length; punct++) { if (Math.abs(punct_arr[punct - 1] - limits[limit]) < (Math.abs(punct_arr[punct] - limits[limit])) && (Math.abs(punct_arr[punct] - limits[limit]) < (Math.abs(punct_arr[punct] - limits[limit + 1])))) { separation_index.push(punct_arr[punct-1]); } } }

¡Gracias por adelantado!

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Aquí hay un enfoque descompuesto en el que comenzamos a escribir en un alto nivel y definimos funciones auxiliares auxiliares en el camino:

 function closest (limits, inputs) { return limits.map(v => closest1(v, inputs)) } function closest1 (one, many) { return many.reduce((r, v) => delta(r, one) < delta(v, one) ? r : v, -Infinity ) } function delta (a, b) { return Math.abs(a - b) } const limits = [280, 560] const inputs = [5, 99, 151, 159, 255, 352, 462, 502, 519, 531, 556, 602] console.log(closest(limits, inputs))

 [ 255, 556 ]
about 4 years ago · Juan Pablo Isaza Denunciar

0

Aquí hay una forma. Acabo de ajustar un poco tu código.

 const limits = [280, 560] const punct_arr = [5, 99, 151, 159, 255, 352, 462, 502, 519, 531, 556, 602] function closestLimits(limits, arr) { const diff = [] const separation_index = [] let closest for (var limit = 0; limit < limits.length; limit++) { diff.length = 0 for (var punct = 0; punct < arr.length; punct++) { var m = Math.abs(arr[punct] - limits[limit]); diff.push(m) if (m <= Math.min(...diff)) { smallest = arr[punct] } } separation_index.push(smallest); } return separation_index } console.log(closestLimits(limits, punct_arr))

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