Kaedah flatMap

Kaedah flatMap mengembalikan tatasusunan baharu, dicipta selepas setiap elemen tatasusunan asal dikenakan kol balik, yang dinyatakan dalam parameter kaedah. Pada pandangan pertama kaedah flatMap menyerupai kaedah map, tetapi perbezaan utamanya ialah ia sentiasa mengembalikan tatasusunan satu dimensi.

Sintaks

javascriptlet newArray = array.flatMap(fungsi);

Contoh

Mari dapatkan tatasusunan baharu, menggunakan kaedah flatMap:

javascriptlet arr = ['a', 'b', 'c'];

let res = arr.flatMap(function(elem) {
  return elem + '!';
});

console.log(res);

Keputusan pelaksanaan kod:

javascript['a!', 'b!', 'c!']

Contoh

Mari dapatkan tatasusunan baharu daripada tatasusunan asal, yang terdiri daripada nombor:

javascriptlet arr = [1, 2, 3, 4, 5];

let res = arr.flatMap(function(elem) {
  return elem + 2;
});

console.log(res);

Keputusan pelaksanaan kod:

javascript[3, 4, 5, 6, 7]

Contoh

Mari cuba gunakan kaedah flatMap pada tatasusunan dengan aras bersarang pertama:

javascriptlet arr = [1, 2, 3, [4, 5]];

let res = arr.flatMap(function getElem(elem){
  return elem + 2;
});

console.log(res);

Selepas pelaksanaan kod kita akan lihat bahawa syarat fungsi telah digunakan pada sub-tatasusunan, menganggapnya sebagai satu elemen. Oleh itu, pemanggilan kaedah ini pada tatasusunan bersarang tidak masuk akal:

javascript[3, 4, 5, '4,52']

Contoh

Jika kita tidak mahu bersusah payah dengan aras bersarang, dan ingin menggabungkan keseluruhan tatasusunan, maka gunakan parameter Infinity:

javascriptlet arr = ['a', 'b', ['c', 'd', ['e', 'f', ['g', 'h', ['i']]]]];

let res = arr.flatMap(Infinity);

console.log(res);

Keputusan pelaksanaan kod:

javascript[
  'a', 'b', 'c',
  'd', 'e', 'f',
  'g', 'h', 'i'
]

Contoh

Mari gunakan dua kaedah pada tatasusunan: flatMap dan map, dan dalam parameter kedua-dua kaedah fungsi yang menjadikan tatasusunan dua dimensi akan dinyatakan:

javascriptlet arr = [1, 2, 3, 4, 5, 6];
let res1 = arr.map(elem => [elem * 3]);
let res2 = arr.flatMap(elem => [elem * 3]);

console.log('kaedah map', res1);
console.log('kaedah flatMap', res2);

Keputusan pelaksanaan kod:

javascript'kaedah map' [[3], [6], [9], [12], [15], [18]]
'kaedah flatMap' [3, 6, 9, 12, 15, 18]

Lihat juga

  • kaedah flat,
    yang mengembalikan tatasusunan daripada sub-tatasusunan