Kodealgo

Array FlatMap JavaScript: Sintaks dan Contoh Penggunaan

Method flatMap() mengembalikan array baru yang dibentuk dengan fungsi callback yang dieksekusi untuk setiap elemen array, kemudian hasilnya diratakan sebanyak satu lapis.

Identik dengan memanggil method map() lalu diikuti oleh flat() dengan kedalam 1.

Tapi ini lebih efisien dibanding memanggil keduanya secara terpisah. Method ini mengembalikan array baru.

Mari kita pelajari sintaks dan contoh penggunaannya.

  1. Sintaks
  2. Contoh
    1. Contoh Sederhana
    2. Hapus Elemen Array Menggunakan flatMap()

Sintaks

// arrow function
flatMap((elemenSaatIni, index, array) => { ... })

// callback function
flatMap(callbackFn, nilaiThis)

Parameter

  • callbackFn: fungsi yang akan yang menghasilkan elemen array baru dan dieksekusi pada setiap elemen array, menerima tiga argumen berikut.
    • elemenSaatIni: elemen saat ini.
    • indeks: indeks elemen saat ini.
    • array: array sumber.
  • nilaiThis: nilai yang digunakan this saat callbackFn dipanggil.

Nilai Kembalian

Mengembalikan array baru dimana setiap elemen merupakan hasil pengolahan fungsi callback, kemudian diratakan hingga kedalam 1.

Contoh

Contoh Sederhana

Mari kita lihat contoh sederhana di bawah untuk mempelajari cara kerja flatMap() dan membandingkannya dengan method map().

const arr = [1, 2, 3, 4];

const result1 = arr.flatMap((x) => [x + 2]);
console.log(result1); // [ 3, 4, 5, 6 ]

// setara dengan:
const result2 = arr.map((x) => [x + 2]).flat();
console.log(result2); // [ 3, 4, 5, 6 ]

Callback yang kita tulis pada method flatMap() mengembalikan array [x + 2], jadi setiap elemen array dibungkus dengan array baru.

Tapi, karena di sini kita menggunakan flatMap() maka lapisan tersebut diratakan.

Jadi, method flatMap() memetakan terlebih dahulu (map()) lalu mertakan (flat()) hasilnya.

Bukan flat() dulu lalu map(), tapi map() dulu baru flat().

Hapus Elemen Array Menggunakan flatMap()

Method flatMap() juga bisa digunakan untuk menghapus elemen array.

Misalnya contoh berikut menghapus semua bilangan ganjil di dalam array.

const arr = [1, 2, 3, 4];

const result = arr.flatMap((x) => (x % 2 !== 0 ? [] : x));

console.log(result); // [ 2, 4 ]