Codificação: nivelar uma matriz em Javascript

Feb 18 2023
Flatten Array: achatar um array significa pegar um array que pode conter arrays aninhados (ou seja,

Flatten Array: Achatar um array significa pegar um array que pode conter arrays aninhados (ou seja, arrays dentro de arrays) e convertê-lo em um único array unidimensional. Em outras palavras, envolve a remoção de todos os arrays aninhados e a combinação de seus elementos em um único array.

Estaremos discutindo várias soluções.

Solução 1: usando recursão

Achatar matriz

O código define uma função chamada FlattenArrayque recebe uma matriz como argumento. O objetivo da função é pegar uma matriz aninhada e retornar uma versão simplificada dela. Por exemplo, se a entrada for [1, 2, [3, 4]], a função deve retornar [1, 2, 3, 4].

A função começa criando uma matriz vazia chamada, que será usada para armazenar a versão simplificada da matriz de entrada. Em seguida, ele entra em forum loop que irá percorrer cada elemento na matriz de entrada.

Para cada elemento na matriz de entrada, a função verifica se o próprio elemento é uma matriz usando o Array.isArraymétodo. Se o elemento for um array, a função chama a si mesma recursivamente com o array aninhado como argumento e usa o concatmétodo para combinar o array aninhado achatado com aquele flatArrayque foi criado no início da função.

Se o elemento não for um array, a função simplesmente coloca o elemento no arquivo flatArray.

Depois que todos os elementos na matriz de entrada foram processados, a função retorna o arquivo 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))

Solução 2: usando o método de redução

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]

O reducemétodo recebe dois argumentos: uma função de retorno de chamada e um valor inicial para o acumulador. Nesse caso, o acumulador é uma matriz vazia que será usada para criar a versão simplificada da matriz de entrada.

A função de retorno de chamada recebe dois argumentos: o valor atual que está sendo processado (que será cada elemento da matriz de entrada por vez) e o valor atual do acumulador.

Dentro da função callback, verificamos se o valor atual é um array usando Array.isArray. Se for um array, chamamos flattenArrayrecursivamente para achatar o array aninhado e depois concatenar o array achatado com o acumulador usando o concatmétodo.

Se o valor atual não for um array, simplesmente o concatenamos com o acumulador usando concat.

Por fim, o reducemétodo retorna o valor final do acumulador, que será a versão simplificada do array de entrada.

Com este código, você deve obter a mesma saída de antes: [1, 2, 3, 4, 5, 6, 7, 8, 9].

Se você estiver interessado em aprender mais sobre codificação em Javascript, siga-me para mais exemplos e trechos de código. Estarei compartilhando informações e dicas valiosas sobre como dominar o idioma e aprimorar suas habilidades como desenvolvedor. Portanto, fique atento para mais atualizações e vamos continuar aprendendo juntos.

Obrigado pela leitura.Bom aprendizado

Threading e multiprocessamento em Python explicados A maneira mais fácil de acessar um banco de dados em JAVA Perguntas mais comuns sobre entrevistas baseadas em fluxo Java8 — Parte 1 Apache Maven — Resumido