---
# System prepended metadata

title: Array.prototype.flatMap()

---

# Array.prototype.flatMap()
მეთოდი ჯერ ყოველ ელემენტს გადაუვლის მოცემული ფუნქციით(***map()*** მეთოდის ანალოგიურად) და შემდეგ აბტყელებს ***flat()*** მეთოდით, რომელსაც პარამეტრად გადაცემული აქვს 1. ფუნქცია მუშაობს აღნიშნული მეთოდების გამოყენების მსგავსად, თუმცა უფრო ეფექტურია, ვიდრე ცალ-ცალკე გადავლა. ბრუნდება ახალი მასივი.


## Syntax
    // Arrow function
    flatMap((currentValue) => { /* ... */ } )
    flatMap((currentValue, index) => { /* ... */ } )
    flatMap((currentValue, index, array) => { /* ... */ } )

    // Callback function
    flatMap(callbackFn)
    flatMap(callbackFn, thisArg)

    // Inline callback function
    flatMap(function(currentValue) { /* ... */ })
    flatMap(function(currentValue, index) { /* ... */ })
    flatMap(function(currentValue, index, array){ /* ... */ })
    flatMap(function(currentValue, index, array) { /* ... */ }, thisArg)

### Parameters
callbackFn - ფუნქცია, რომელიც ქმნის ახალი მასივის ელემენტებს. იღებს სამ პარამეტრს:
* currentValue - მასივის მოცემული ელემენტი
* index - ელემენტის ინდექსი
* array - მასივი, რომელიც იძახებს flatMap-ს

thisArg - მნიშვნელობა, რომელიც გამოიყენება, როგორც ***this*** callbackFn გამოძახებისას 

## Examples
    const number = 123456;
    console.log(
      number
        .toString()
        .split('')
        .flatMap(elem => {
          const sum = elem * elem;
          if (sum.toString().length === 2) {
            return [Number(String(sum)[0]), Number(String(sum)[1])];
          }
          return sum;
        })
    );
    
###### output
    [1, 4, 9, 1, 6, 2, 5, 3, 6]