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