Programação funcional - sabrinabm94/javascript GitHub Wiki

Utilizado para manipular dados de um array, retornando um novo array com os resultados, não modificando o conteúdo do array original.

Filter (buscar)

Busca num array pela informação desejada retornando os valores encontrados, ou seja, usado para filtrar valores de um array e salvar os selecionados dentro de um novo array.

const prices = [
"R$ 100", "R$ 200", "accounts", "R$ 500", "data"];

const pricesFiltered = prices.filter(price => price.includes("R$"));

console.log(pricesFiltered);
//"R$ 100", "R$ 200", "R$ 500"
var months = [
    {shortName: 'JAN', fullName: 'January',  number: 1},
    {shortName: 'FEB', fullName: 'February', number: 2},
    ...
];

var firstSemester = months.filter(function(month) {
    return month.number <= 6;
});

console.log(firstSemester); // ['JAN', 'FEB', .. , 'JUN']

Map (manipular)

É usado para manipular o conteúdo de um array, ou seja, usado para percorrer todos os valores de um array e retornar o resultado dentro de um novo array.

const prices = [
"R$ 100", "R$ 200", "accounts", "R$ 500", "data"];

const pricesFiltered = prices.filter(price => price.includes("R$"));

const pricesMapped = pricesFiltered .map(function(price) {
return price.replace('R$ ', '') + ',00';
}
);

console.log(pricesMapped );
//"100.00", "200.00", "500.00"
var months = [
    {shortName: 'JAN', fullName: 'January',  number: 1},
    {shortName: 'FEB', fullName: 'February', number: 2},
    ...
];

var shortNameMonths = months.map(function(month) {
    return month.shortName;
});

console.log(shortNameMonths); // ['JAN', 'FEB', ...]
//map dentro de map
let subcategories = [
  {
    id: 5050,
    name: "Acessibilidade",
    slug: "reformas-e-reparos/acessibilidade",
    children: [
      {
        id: 5054,
        name: "Consultoria",
        slug: "reformas-e-reparos/acessibilidade/consultoria",
      },
      {
        id: 5055,
        name: "Instalação de Acessórios e Equipamentos",
        slug: "reformas-e-reparos/acessibilidade/instalacao-de-acessorios-e-equipamentos",
      },
      {
        id: 5056,
        name: "Laudos Técnicos",
        slug: "reformas-e-reparos/acessibilidade/laudos-tecnicos",
      },
      {
        id: 5057,
        name: "Projeto de Acessibilidade",
        slug: "reformas-e-reparos/acessibilidade/projeto-de-acessibilidade",
      },
      {
        id: 5058,
        name: "Sinalização",
        slug: "reformas-e-reparos/acessibilidade/sinalizacao",
      },
    ],
  },
  {
    id: 5071,
    name: "Afiação",
    slug: "reformas-e-reparos/afiacao",
    children: [
      {
        id: 5072,
        name: "Alicates e Tesouras",
        slug: "reformas-e-reparos/afiacao/alicates-e-tesouras",
      },
      {
        id: 5073,
        name: "Bisturis e Estiletes",
        slug: "reformas-e-reparos/afiacao/bisturis-e-estiletes",
      },
      {
        id: 5074,
        name: "Cutelos e Facas",
        slug: "reformas-e-reparos/afiacao/cutelos-e-facas",
      },
      {
        id: 5075,
        name: "Espadas",
        slug: "reformas-e-reparos/afiacao/espadas",
      },
      {
        id: 5076,
        name: "Outros",
        slug: "reformas-e-reparos/afiacao/outros",
      },
    ],
  },
];

let categoryWithSubcategoriesChildrenNames = subcategories.map(
  (subcategory) => {
    return [
      subcategory.name,
      subcategory.children.map((children) => {
        return children.name;
      }),
    ];
  }
);

console.log(categoryWithSubcategoriesChildrenNames);

Reduce (valor único)

É usado para retornar um valor único resultante de uma manipulação de array, ou seja, usado para reduzir os valores de um array retornando em um único valor.

var months = [
    {shortName: 'JAN', fullName: 'January',  number: 1},
    {shortName: 'FEB', fullName: 'February', number: 2},
    ...
];

var monthsAcc = months.reduce(function(acc, month) {
    return acc + '/' + month.shortName;
}, '');

console.log(monthsAcc); // /JAN/FEB/MAR/APR...