Este es el tipo de datos que tengo:
["2", "Something1", "Something2", "4", "Something3", "Something4", "Something5", "Something6", "2", "Something7", "Something8"]El número indica qué tan grande debe ser el trozo.
const splitInput = (input: string[]) => { const chunks: string[][] = []; input.forEach((element) => { if (element.length === 1) { const chunk = input.splice(input.indexOf(element) + 1, parseInt(element)); console.log(chunk); chunks.push(chunk) } }); El código anterior funciona solo hasta que no hay los mismos números, ya que indexOf encuentra la primera aparición. ¿Cómo puedo calcular fromIndex de indexOf() correctamente o eliminar todos los elementos eliminados de la matriz (incluidos los números)?
Esta sería la salida esperada
[ ["Something1", "Something2"], ["Something3","Something4","Something5","Something6"],["Something7", "Something8"] ]Antes de que alguien pregunte, sí, esto es una parte (no todo, esto es solo un comienzo, tendré que hacer algo con los trozos) de mi tarea. He estado probando todo durante las últimas 2 horas y no pude resolverlo.
No sé cómo arreglar su enfoque, pero otro enfoque es iterar sobre los tamaños de los fragmentos y llenar otra matriz con los fragmentos:
function splitInput(elements) { const result = []; for (let i = 0, end = elements.length; i < end; i += 1 + +elements[i]) { result.push(elements.slice(i + 1, i + 1 + +elements[i])); } return result; } const elements = ["2", "Something1", "Something2", "4", "Something3", "Something4", "Something5", "Something6", "2", "Something7", "Something8"]; console.log(splitInput(elements));