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

178
Vistas
Función en una matriz anidada en js

Aquí está mi función que convierte las marcas de tiempo en segundos,

 const convertor = (x) => { const result = x.split(':'); const final = parseInt(result[0] * 60) + parseInt(result[1] * 60) + parseInt(result[2]) - 1.2; return final; };

entrada = 00:01:02.330 resultado: 62.330

¿Cómo puedo implementarlo en una matriz anidada como esta?

matriz = [ [ 00:01:02.330],[00:01:04.550],[01:11:02.330] ] , [ [00:01:02.330],[00:01:02.330] ] , [ [00: 01:02.330],[00:01:02.330],[00:01:02.330] ] ]

Quiero preservar su estructura anidada, por lo que el resultado debería ser:

[ [ 22.3],[28.5],[903.50] ] , [ [1252.3],[62.2] ] , [ [654.25],[965.25],[1254.32] ] ]

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

0

No estoy seguro de por qué mantiene las marcas de tiempo en una matriz cuando es el único elemento, pero puede obtener el resultado deseado encadenando map()

 const convertor = (x) => { const result = x[0].split(':'); const final = parseInt(result[0] * 60) + parseInt(result[1] * 60) + parseInt(result[2]) - 1.2; return final; }; const array = [ [ [ '00:01:02.330' ], [ '00:01:04.550' ], [ '01:11:02.330' ] ], [ [ '00:01:02.330' ], [ '00:01:02.330' ] ], [ [ '00:01:02.330' ], [ '00:01:02.330' ], [ '00:01:02.330' ] ] ]; const output = array.map(a => a.map(b => convertor(b))); console.log(output);

 [ [ 60.8, 62.8, 720.8 ], [ 60.8, 60.8 ], [ 60.8, 60.8, 60.8 ] ]
about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede escribir un envoltorio que acepte una función y una matriz, y mapee sobre la matriz; si el elemento es una matriz, recurre; de lo contrario, pasa el elemento a la función pasada; esto le permite procesar matrices anidadas de cualquier profundidad arbitraria y conservar la estructura deseada:

 const convertor = (x) => { const result = x.split(':'); const final = parseInt(result[0] * 60) + parseInt(result[1] * 60) + parseInt(result[2]) - 1.2; return final; }; const recursiveNestedMapper = (fn, arr) => { const output = arr.map((item) => { if (Array.isArray(item)) { return recursiveNestedMapper(fn, item); } else { return fn(item); } }); return output; } const inputArray = [ [ ['00:01:02.330'], ['00:01:04.550'], ['01:11:02.330'] ], [ ['00:01:02.330'], ['00:01:02.330'] ], [ ['00:01:02.330'], ['00:01:02.330'], ['00:01:02.330'] ] ]; const outArray = recursiveNestedMapper(convertor, inputArray); console.log(outArray);

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