Codificación: aplanar una matriz en Javascript

Feb 18 2023
Flatten Array: aplanar una matriz significa tomar una matriz que puede contener matrices anidadas (es decir,

Flatten Array: aplanar una matriz significa tomar una matriz que puede contener matrices anidadas (es decir, matrices dentro de matrices) y convertirla en una única matriz unidimensional. En otras palabras, implica eliminar todas las matrices anidadas y combinar sus elementos en una sola matriz.

Estaremos discutiendo múltiples soluciones.

Solución 1: usar la recursividad

Aplanar matriz

El código define una función llamada FlattenArrayque toma una matriz como argumento. El objetivo de la función es tomar una matriz anidada y devolver una versión aplanada de la misma. Por ejemplo, si la entrada es [1, 2, [3, 4]], la función debería devolver [1, 2, 3, 4].

La función comienza creando una matriz vacía llamada, que se usará para almacenar la versión plana de la matriz de entrada. Luego ingresa a forun bucle que iterará a través de cada elemento en la matriz de entrada.

Para cada elemento de la matriz de entrada, la función comprueba si el elemento es en sí mismo una matriz utilizando el Array.isArraymétodo. Si el elemento es una matriz, la función se llama a sí misma recursivamente con la matriz anidada como argumento y utiliza el concatmétodo para combinar la matriz anidada aplanada con la flatArrayque se creó al comienzo de la función.

Si el elemento no es una matriz, la función simplemente inserta el elemento en el archivo flatArray.

Una vez que se han procesado todos los elementos de la matriz de entrada, la función devuelve el archivo flatArray.

Código completo:

// Flatten Array
function FlattenArray(arr) {
  var flatArray = []
  for (let i = 0; i < arr.length; i++) {
    if (Array.isArray(arr[i])) {
      flatArray = flatArray.concat(FlattenArray(arr[i]))
    } else {
      flatArray.push(arr[i])
    }
  }
  return flatArray
}

var arr = [1, 2, 3, 4, [5, 6, [7, 8]], [9]]
console.log(FlattenArray(arr))

Solución 2: usar el método de reducción

function flattenArray(arr) {
  return arr.reduce(function(flatArray, current) {
    if (Array.isArray(current)) {
      return flatArray.concat(flattenArray(current));
    } else {
      return flatArray.concat(current);
    }
  }, []);
}

var arr = [1, 2, 3, 4, [5, 6, [7, 8]], [9]];
console.log(flattenArray(arr)); // [1, 2, 3, 4, 5, 6, 7, 8, 9]

El reducemétodo toma dos argumentos: una función de devolución de llamada y un valor inicial para el acumulador. En este caso, el acumulador es una matriz vacía que se usará para construir la versión aplanada de la matriz de entrada.

La función de devolución de llamada toma dos argumentos: el valor actual que se procesa (que será cada elemento de la matriz de entrada a su vez) y el valor actual del acumulador.

Dentro de la función de devolución de llamada, verificamos si el valor actual es una matriz usando Array.isArray. Si es una matriz, llamamos flattenArrayrecursivamente para aplanar la matriz anidada y luego concatenar la matriz aplanada con el acumulador usando el concatmétodo.

Si el valor actual no es una matriz, simplemente lo concatenamos con el acumulador usando concat.

Finalmente, el reducemétodo devuelve el valor final del acumulador, que será la versión aplanada de la matriz de entrada.

Con este código, debería obtener el mismo resultado que antes: [1, 2, 3, 4, 5, 6, 7, 8, 9].

Si está interesado en aprender más sobre la codificación en Javascript, asegúrese de seguirme para obtener más fragmentos de código y ejemplos. Estaré compartiendo información valiosa y consejos sobre cómo dominar el lenguaje y mejorar tus habilidades como desarrollador. Entonces, estén atentos para más actualizaciones y sigamos aprendiendo juntos.

Gracias por leer. Feliz aprendizaje

Explicación de subprocesos y multiprocesamiento en Python La forma más fácil de acceder a una base de datos en JAVA Preguntas más frecuentes de la entrevista basada en flujo de Java8 — Parte 1 Apache Maven — En resumen