Codificação: nivelar uma matriz em Javascript
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
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




































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)