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

177
Vistas
Function on a nested array in js

Here is my Function which turns timestamps to seconds,

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

input = 00:01:02.330 result: 62.330

How can I implement it on a nested array like this?

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

I want to preserve its nested structure so the result should be:

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

Not sure why you're keeping the timestamps in an array when it's the only element, but you can get the desired output by chaining 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

You can write a wrapper that accepts a function and an array, and maps over the array-- if the item is an array, it recurses; otherwise, it passes the item into the passed function-- this allows you to process nested arrays of any arbitrary depth and retain the desired structure:

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