Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

Esta página foi traduzida do inglês pela comunidade. Saiba mais e junte-se à comunidade MDN Web Docs.

Array.prototype.flatMap()

BaselineWidely available

O métodoflatMap() primeiro mapeia cada elemento usando uma função de mapeamento e, em seguida, nivela o resultado em um novo array. É idêntico a ummap seguido por umflat de profundidade 1, masflatMap é bastante útil e mescla ambos em um método um pouco mais eficiente.

Experimente

const arr1 = [1, 2, 1];const result = arr1.flatMap((num) => (num === 2 ? [2, 2] : 1));console.log(result);// Expected output: Array [1, 2, 2, 1]

Sintaxe

var new_array = arr.flatMap(function callback(currentValue[, index[, array]]) {    // retorna o elemento para new_array}[, thisArg])

Parâmetros

callback

Função que produz um elemento de uma nova Array, pegando três argumentos:

currentValue

O valor atual sendo processo na array.

indexOptional

O index do valor atual sendo processo na array.

arrayOptional

Omap da array que foi chamado.

thisArgOptional

Valor para ser usado comothis quandocallback estiver sendo executado.

Valor de retorno

Uma nova array com cada elemento sendo o resultado da função callback e achatado ao valor de 1.

Descrição

VejaArray.prototype.map() para uma detalhada descrição da função callback. O métodoflatMap é idêntico aomap seguido por um chamado aflatten de profundidade 1.

Exemplos

map eflatMap

js
var arr1 = [1, 2, 3, 4];arr1.map((x) => [x * 2]);// [[2], [4], [6], [8]]arr1.flatMap((x) => [x * 2]);// [2, 4, 6, 8]//  Só o primeiro nívelarr1.flatMap((x) => [[x * 2]]);// [[2], [4], [6], [8]]

Enquanto que acima poderíamos alcançar apenas com a utilização de map, já aqui temos um exemplo ondeflatMap é mais apropriado.

Vamos gerar uma lista de palavras a partir de uma lista de sentenças.

js
let arr1 = ["it's Sunny in", "", "California"];arr1.map((x) => x.split(" "));// [["it's","Sunny","in"],[""],["California"]]arr1.flatMap((x) => x.split(" "));// ["it's","Sunny","in", "", "California"]

Perceba, o comprimento da lista de saída pode ser diferente do comprimento da lista de entrada.

Alternativa

reduce econcat

js
var arr1 = [1, 2, 3, 4];arr1.flatMap((x) => [x * 2]);// é equivalente aarr1.reduce((acc, x) => acc.concat([x * 2]), []);// [ 2, 4, 6, 8 ]

Especificações

SpecificationStatusComment
Array.prototype.flatMap proposalRascunho

Compatibilidade com navegadores

Veja também

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp