Kodowanie: spłaszcz tablicę w JavaScript

Feb 18 2023
Spłaszczanie tablicy: Spłaszczanie tablicy oznacza wzięcie tablicy, która może zawierać zagnieżdżone tablice (np

Spłaszczanie tablicy: Spłaszczanie tablicy oznacza wzięcie tablicy, która może zawierać zagnieżdżone tablice (tj. tablice w tablicach) i przekształcenie jej w pojedynczą, jednowymiarową tablicę. Innymi słowy, polega na usunięciu wszystkich zagnieżdżonych tablic i połączeniu ich elementów w jedną tablicę.

Omówimy wiele rozwiązań.

Rozwiązanie 1: Korzystanie z rekurencji

Spłaszcz tablicę

Kod definiuje wywołaną funkcję FlattenArray, która przyjmuje tablicę jako argument. Celem tej funkcji jest pobranie zagnieżdżonej tablicy i zwrócenie jej spłaszczonej wersji. Na przykład, jeśli dane wejściowe to [1, 2, [3, 4]], funkcja powinna zwrócić [1, 2, 3, 4].

Funkcja rozpoczyna się od utworzenia pustej tablicy o nazwie , która będzie używana do przechowywania spłaszczonej wersji tablicy wejściowej. Następnie wchodzi w forpętlę, która będzie przechodzić przez każdy element w tablicy wejściowej.

Dla każdego elementu w tablicy wejściowej funkcja sprawdza, czy element sam jest tablicą przy użyciu metody Array.isArray. Jeśli elementem jest tablica, funkcja wywołuje samą siebie rekurencyjnie z zagnieżdżoną tablicą jako argumentem i używa metody concatdo połączenia spłaszczonej zagnieżdżonej tablicy z tablicą flatArrayutworzoną na początku funkcji.

Jeśli element nie jest tablicą, funkcja po prostu wypycha element do tablicy flatArray.

Po przetworzeniu wszystkich elementów w tablicy wejściowej funkcja zwraca wartość flatArray.

Kompletny kod:

// 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))

Rozwiązanie 2: Korzystanie z metody zmniejszania

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]

Metoda reduceprzyjmuje dwa argumenty: funkcję wywołania zwrotnego i wartość początkową dla akumulatora. W tym przypadku akumulator jest pustą tablicą, która zostanie użyta do zbudowania spłaszczonej wersji tablicy wejściowej.

Funkcja wywołania zwrotnego przyjmuje dwa argumenty: bieżącą przetwarzaną wartość (która będzie po kolei każdym elementem tablicy wejściowej) oraz bieżącą wartość akumulatora.

Wewnątrz funkcji wywołania zwrotnego sprawdzamy, czy bieżąca wartość jest tablicą za pomocą Array.isArray. Jeśli jest to tablica, wywołujemy flattenArrayrekurencyjnie, aby spłaszczyć zagnieżdżoną tablicę, a następnie połączyć spłaszczoną tablicę z akumulatorem za pomocą metody concat.

Jeśli bieżąca wartość nie jest tablicą, po prostu łączymy ją z akumulatorem za pomocą concat.

Na koniec reducemetoda zwraca końcową wartość akumulatora, którą będzie spłaszczona wersja tablicy wejściowej.

Za pomocą tego kodu powinieneś uzyskać takie same dane wyjściowe jak poprzednio: [1, 2, 3, 4, 5, 6, 7, 8, 9].

Jeśli chcesz dowiedzieć się więcej o kodowaniu w JavaScript, śledź mnie, aby uzyskać więcej fragmentów kodu i przykładów. Będę dzielić się cennymi informacjami i wskazówkami, jak opanować język i poprawić swoje umiejętności jako programisty. Czekamy więc na dalsze aktualizacje i kontynuujmy wspólną naukę.

Dziękuję za przeczytanie. Miłej nauki

Wyjaśnienie wątków i wieloprocesorowości w Pythonie Najłatwiejszy sposób na dostęp do bazy danych w JAVA