{"id":993,"date":"2018-04-05T12:18:40","date_gmt":"2018-04-05T12:18:40","guid":{"rendered":"http:\/\/www.andrefelizardo.com.br\/blog\/?p=993"},"modified":"2018-04-07T16:35:51","modified_gmt":"2018-04-07T16:35:51","slug":"javascript-reduce","status":"publish","type":"post","link":"https:\/\/www.andrefelizardo.com.br\/blog\/javascript-reduce\/","title":{"rendered":"JavaScript &#8211; Reduce"},"content":{"rendered":"<p>JavaScript Reduce \u00e9 um dos m\u00e9todos recentes de programa\u00e7\u00e3o funcional que a linguagem possui. Ele foi definido no EcmaScript 2015, e \u00e9 um m\u00e9todo de<!--more--> arrays. Acesse aqui para entender um pouco mais dessa <a href=\"http:\/\/www.andrefelizardo.com.br\/blog\/javascript-comecando-do-jeito-certo\/#historia\" target=\"_blank\" rel=\"noopener\">hist\u00f3ria do JavaScript<\/a>. Se voc\u00ea n\u00e3o entende muito bem sobre programa\u00e7\u00e3o funcional, deixa um coment\u00e1rio que fa\u00e7o um texto sobre. Mas tentando resumir,\u00a0<em>programa\u00e7\u00e3o funcional<\/em> \u00e9 um paradigma que evita a cria\u00e7\u00e3o de estados ou dados mut\u00e1veis.<\/p>\n<ul>\n<li><a href=\"#metodo\">O m\u00e9todo<\/a>\n<ul>\n<li><a href=\"#valor-anterior\">valorAnterior<\/a><\/li>\n<li><a href=\"#valor-atual\">valorAtual<\/a><\/li>\n<li><a href=\"#indice\">indice<\/a><\/li>\n<li><a href=\"#valor-inicial\">valorInicial<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#utilizacao\">Utiliza\u00e7\u00e3o<\/a><\/li>\n<li><a href=\"#exemplos\">Exemplos<\/a><\/li>\n<li><a href=\"#compatibilidade\">Compatibilidade<\/a><\/li>\n<\/ul>\n<p><a name=\"metodo\"><\/a><\/p>\n<h2>O m\u00e9todo<\/h2>\n<p>O m\u00e9todo <i>reduce()<\/i> reduz um array a um \u00fanico valor, executando uma fun\u00e7\u00e3o para cada valor do array da esquerda para a direita ou de baixo para cima. No caso de valores indefinidos, a fun\u00e7\u00e3o n\u00e3o \u00e9 executada.<\/p>\n<p>Sendo assim, o m\u00e9todo tem a seguinte estrutura:<\/p>\n<pre>array.<strong>reduce<\/strong>(callback(valorAnterior, valorAtual, indice, array){...}, valorInicial)<\/pre>\n<p>A callback (fun\u00e7\u00e3o que \u00e9 executada para cada valor do array) recebe quatro par\u00e2metros:<br \/>\n<a name=\"valor-anterior\"><\/a><\/p>\n<h3>valorAnterior<\/h3>\n<p>\u00c9 o valor retornado na \u00faltima vez que a callback foi chamada. Se o par\u00e2metro <em>valorInicial\u00a0<\/em>estiver sendo utilizado, na primeira chamada da callback, ele \u00e9 o valor utilizado.<br \/>\n<a name=\"valor-atual\"><\/a><\/p>\n<h3>valorAtual<\/h3>\n<p>O valor atual do array, que est\u00e1 sendo utilizado.<br \/>\n<a name=\"indice\"><\/a><\/p>\n<h3>indice<\/h3>\n<p>\u00cdndice (posi\u00e7\u00e3o) do elemento atual. Lembrando que array come\u00e7a no \u00edndice 0.<br \/>\n<a name=\"valor-inicial\"><\/a><\/p>\n<h3>valorInicial<\/h3>\n<p>Esse par\u00e2metro \u00e9 opcional. Caso seja passado, \u00e9 usado como primeiro argumento, na primeira chamada da fun\u00e7\u00e3o callback.<br \/>\n<a name=\"utilizacao\"><\/a><\/p>\n<h2>Utiliza\u00e7\u00e3o<\/h2>\n<p>Imagine que voc\u00ea tem uma tabela de produtos, e voc\u00ea queira somar todos os valores dos produtos ou todas as quantidades, por exemplo. O m\u00e9todo JavaScript reduce \u00e9 uma excelente sa\u00edda nesse caso.<\/p>\n<p>Outra utiliza\u00e7\u00e3o comum \u00e9 para o caso de c\u00e1lculo de m\u00e9dia de v\u00e1rios valores.<br \/>\n<a name=\"exemplos\"><\/a><\/p>\n<h2>Exemplos<\/h2>\n<p>Vamos come\u00e7ar fazendo a soma. Imagine que tenhamos um array com os pre\u00e7os de produtos de um carrinho e queremos calcular o pre\u00e7o total deste carrinho. Como resultado ter\u00edamos um c\u00f3digo parecido com:<\/p>\n<p><script async src=\"\/\/jsfiddle.net\/andrefelizardo\/8xayxpkz\/4\/embed\/js\/dark\/\"><\/script><\/p>\n<p>Se voc\u00ea ainda n\u00e3o entende muito bem sobre\u00a0<a href=\"http:\/\/www.andrefelizardo.com.br\/blog\/javascript-variaveis\/\" target=\"_blank\" rel=\"noopener\"><em>let\u00a0<\/em>e\u00a0<em>const<\/em><\/a> d\u00e1 uma lida nesse outro texto.<\/p>\n<p>No segundo exemplo, vamos fazer uma m\u00e9dia simples do somat\u00f3rios de v\u00e1rias notas:<\/p>\n<p><script async src=\"\/\/jsfiddle.net\/andrefelizardo\/ctqt4yoc\/5\/embed\/js\/dark\/\"><\/script><\/p>\n<p>Bem tranquilo n\u00e9?<br \/>\n<a name=\"compatibilidade\"><\/a><\/p>\n<h2>Compatibilidade<\/h2>\n<p>Uma coisa que a gente sempre tem que se preocupar com as novas features do JavaScript, CSS ou outro \u00e9 em qual navegadores funciona. Claro que se voc\u00ea estiver s\u00f3 estudando, estuda o que tem de melhor. Mas se for pra colocar em produ\u00e7\u00e3o, principalmente a galera do Internet Explorer, tem sempre que se preocupar. Sendo assim, compatibilidade do JavaScript reduce \u00e9 a seguinte:<\/p>\n<div id=\"attachment_1006\" style=\"width: 510px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2018\/04\/javascript-reduce-compatibilidade.png\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" aria-describedby=\"caption-attachment-1006\" class=\"wp-image-1006 lazyload\" data-src=\"http:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2018\/04\/javascript-reduce-compatibilidade-300x188.png\" alt=\"Imagem da compatibilidade do javascript reduce nos navegadores mais atuais\" width=\"500\" height=\"313\" data-srcset=\"https:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2018\/04\/javascript-reduce-compatibilidade-300x188.png 300w, https:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2018\/04\/javascript-reduce-compatibilidade-768x481.png 768w, https:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2018\/04\/javascript-reduce-compatibilidade.png 962w\" data-sizes=\"(max-width: 500px) 100vw, 500px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 500px; --smush-placeholder-aspect-ratio: 500\/313;\" \/><\/a><p id=\"caption-attachment-1006\" class=\"wp-caption-text\">Ver detalhes no <a href=\"https:\/\/caniuse.com\/#feat=es5\" target=\"_blank\" rel=\"noopener\">CanIUse<\/a><\/p><\/div>\n<p>Ou seja, n\u00e3o tendo necessidade do IE 8, voc\u00ea pode usar tranquilo o JavaScript reduce, beleza?<\/p>\n<p>Qualquer d\u00favida n\u00e3o esquece de deixar seu coment\u00e1rio e fica de olho que vou continuar escrevendo sobre os m\u00e9todos mais interessantes do JavaScript! Segue l\u00e1 no Facebook pra ficar sabendo dos posts assim que eles forem lan\u00e7ados \ud83d\ude42<\/p>\n<p>&nbsp;<\/p>\n<p>[wpdevart_like_box profile_id=&#8221;514623068560386&#8243; connections=&#8221;show&#8221; width=&#8221;500&#8243; height=&#8221;550&#8243; header=&#8221;small&#8221; cover_photo=&#8221;show&#8221; locale=&#8221;pt_BR&#8221;]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>JavaScript Reduce \u00e9 um dos m\u00e9todos recentes de programa\u00e7\u00e3o funcional que a linguagem possui. Ele foi definido no EcmaScript 2015, e \u00e9 um m\u00e9todo de<\/p>\n","protected":false},"author":1,"featured_media":1005,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[117,5],"tags":[93,111,138,52,114,55,56],"class_list":["post-993","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev","category-tecnologia","tag-desenvolvimento","tag-devs","tag-es6","tag-front-end","tag-frontend","tag-javascript","tag-js"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>JavaScript - Reduce - Blog do Andr\u00e9 Felizardo<\/title>\n<meta name=\"description\" content=\"Conhe\u00e7a o m\u00e9todo JavaScript reduce(), um dos m\u00e9todos mais utilizados no JavaScript principalmente quando se fala dos conceitos de programa\u00e7\u00e3o funcional.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.andrefelizardo.com.br\/blog\/javascript-reduce\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JavaScript - Reduce - Blog do Andr\u00e9 Felizardo\" \/>\n<meta property=\"og:description\" content=\"Conhe\u00e7a o m\u00e9todo JavaScript reduce(), um dos m\u00e9todos mais utilizados no JavaScript principalmente quando se fala dos conceitos de programa\u00e7\u00e3o funcional.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.andrefelizardo.com.br\/blog\/javascript-reduce\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog do Andr\u00e9 Felizardo\" \/>\n<meta property=\"article:published_time\" content=\"2018-04-05T12:18:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-04-07T16:35:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2018\/04\/javascript-reduce.png\" \/>\n\t<meta property=\"og:image:width\" content=\"750\" \/>\n\t<meta property=\"og:image:height\" content=\"391\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Felizardo\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Felizardo\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/javascript-reduce\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/javascript-reduce\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Felizardo\",\"@id\":\"http:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/7ffba68b251851fb519600e2e387a02b\"},\"headline\":\"JavaScript &#8211; Reduce\",\"datePublished\":\"2018-04-05T12:18:40+00:00\",\"dateModified\":\"2018-04-07T16:35:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/javascript-reduce\\\/\"},\"wordCount\":512,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/javascript-reduce\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/04\\\/javascript-reduce.png\",\"keywords\":[\"desenvolvimento\",\"devs\",\"es6\",\"front-end\",\"frontend\",\"javascript\",\"js\"],\"articleSection\":[\"Dev\",\"Tecnologia\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/javascript-reduce\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/javascript-reduce\\\/\",\"url\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/javascript-reduce\\\/\",\"name\":\"JavaScript - Reduce - Blog do Andr\u00e9 Felizardo\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/javascript-reduce\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/javascript-reduce\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/04\\\/javascript-reduce.png\",\"datePublished\":\"2018-04-05T12:18:40+00:00\",\"dateModified\":\"2018-04-07T16:35:51+00:00\",\"author\":{\"@id\":\"http:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/7ffba68b251851fb519600e2e387a02b\"},\"description\":\"Conhe\u00e7a o m\u00e9todo JavaScript reduce(), um dos m\u00e9todos mais utilizados no JavaScript principalmente quando se fala dos conceitos de programa\u00e7\u00e3o funcional.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/javascript-reduce\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/javascript-reduce\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/javascript-reduce\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/04\\\/javascript-reduce.png\",\"contentUrl\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/04\\\/javascript-reduce.png\",\"width\":750,\"height\":391,\"caption\":\"Capa do blog para JavaScript reduce\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/javascript-reduce\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"http:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JavaScript &#8211; Reduce\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/#website\",\"url\":\"http:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/\",\"name\":\"Blog do Andr\u00e9 Felizardo\",\"description\":\"Programa\u00e7\u00e3o de dev para dev\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"http:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/7ffba68b251851fb519600e2e387a02b\",\"name\":\"Andr\u00e9 Felizardo\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/wp-content\\\/wphb-cache\\\/gravatar\\\/9f9\\\/9f92d8b773ef5acf9b462d6dab41d783x96.jpg\",\"url\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/wp-content\\\/wphb-cache\\\/gravatar\\\/9f9\\\/9f92d8b773ef5acf9b462d6dab41d783x96.jpg\",\"contentUrl\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/wp-content\\\/wphb-cache\\\/gravatar\\\/9f9\\\/9f92d8b773ef5acf9b462d6dab41d783x96.jpg\",\"caption\":\"Andr\u00e9 Felizardo\"},\"sameAs\":[\"http:\\\/\\\/www.andrefelizardo.com.br\"],\"url\":\"https:\\\/\\\/www.andrefelizardo.com.br\\\/blog\\\/author\\\/andrefelizardo\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"JavaScript - Reduce - Blog do Andr\u00e9 Felizardo","description":"Conhe\u00e7a o m\u00e9todo JavaScript reduce(), um dos m\u00e9todos mais utilizados no JavaScript principalmente quando se fala dos conceitos de programa\u00e7\u00e3o funcional.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.andrefelizardo.com.br\/blog\/javascript-reduce\/","og_locale":"pt_BR","og_type":"article","og_title":"JavaScript - Reduce - Blog do Andr\u00e9 Felizardo","og_description":"Conhe\u00e7a o m\u00e9todo JavaScript reduce(), um dos m\u00e9todos mais utilizados no JavaScript principalmente quando se fala dos conceitos de programa\u00e7\u00e3o funcional.","og_url":"https:\/\/www.andrefelizardo.com.br\/blog\/javascript-reduce\/","og_site_name":"Blog do Andr\u00e9 Felizardo","article_published_time":"2018-04-05T12:18:40+00:00","article_modified_time":"2018-04-07T16:35:51+00:00","og_image":[{"width":750,"height":391,"url":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2018\/04\/javascript-reduce.png","type":"image\/png"}],"author":"Andr\u00e9 Felizardo","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Andr\u00e9 Felizardo","Est. tempo de leitura":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.andrefelizardo.com.br\/blog\/javascript-reduce\/#article","isPartOf":{"@id":"https:\/\/www.andrefelizardo.com.br\/blog\/javascript-reduce\/"},"author":{"name":"Andr\u00e9 Felizardo","@id":"http:\/\/www.andrefelizardo.com.br\/blog\/#\/schema\/person\/7ffba68b251851fb519600e2e387a02b"},"headline":"JavaScript &#8211; Reduce","datePublished":"2018-04-05T12:18:40+00:00","dateModified":"2018-04-07T16:35:51+00:00","mainEntityOfPage":{"@id":"https:\/\/www.andrefelizardo.com.br\/blog\/javascript-reduce\/"},"wordCount":512,"commentCount":0,"image":{"@id":"https:\/\/www.andrefelizardo.com.br\/blog\/javascript-reduce\/#primaryimage"},"thumbnailUrl":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2018\/04\/javascript-reduce.png","keywords":["desenvolvimento","devs","es6","front-end","frontend","javascript","js"],"articleSection":["Dev","Tecnologia"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.andrefelizardo.com.br\/blog\/javascript-reduce\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.andrefelizardo.com.br\/blog\/javascript-reduce\/","url":"https:\/\/www.andrefelizardo.com.br\/blog\/javascript-reduce\/","name":"JavaScript - Reduce - Blog do Andr\u00e9 Felizardo","isPartOf":{"@id":"http:\/\/www.andrefelizardo.com.br\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.andrefelizardo.com.br\/blog\/javascript-reduce\/#primaryimage"},"image":{"@id":"https:\/\/www.andrefelizardo.com.br\/blog\/javascript-reduce\/#primaryimage"},"thumbnailUrl":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2018\/04\/javascript-reduce.png","datePublished":"2018-04-05T12:18:40+00:00","dateModified":"2018-04-07T16:35:51+00:00","author":{"@id":"http:\/\/www.andrefelizardo.com.br\/blog\/#\/schema\/person\/7ffba68b251851fb519600e2e387a02b"},"description":"Conhe\u00e7a o m\u00e9todo JavaScript reduce(), um dos m\u00e9todos mais utilizados no JavaScript principalmente quando se fala dos conceitos de programa\u00e7\u00e3o funcional.","breadcrumb":{"@id":"https:\/\/www.andrefelizardo.com.br\/blog\/javascript-reduce\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.andrefelizardo.com.br\/blog\/javascript-reduce\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.andrefelizardo.com.br\/blog\/javascript-reduce\/#primaryimage","url":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2018\/04\/javascript-reduce.png","contentUrl":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2018\/04\/javascript-reduce.png","width":750,"height":391,"caption":"Capa do blog para JavaScript reduce"},{"@type":"BreadcrumbList","@id":"https:\/\/www.andrefelizardo.com.br\/blog\/javascript-reduce\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"http:\/\/www.andrefelizardo.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"JavaScript &#8211; Reduce"}]},{"@type":"WebSite","@id":"http:\/\/www.andrefelizardo.com.br\/blog\/#website","url":"http:\/\/www.andrefelizardo.com.br\/blog\/","name":"Blog do Andr\u00e9 Felizardo","description":"Programa\u00e7\u00e3o de dev para dev","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/www.andrefelizardo.com.br\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"http:\/\/www.andrefelizardo.com.br\/blog\/#\/schema\/person\/7ffba68b251851fb519600e2e387a02b","name":"Andr\u00e9 Felizardo","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/wphb-cache\/gravatar\/9f9\/9f92d8b773ef5acf9b462d6dab41d783x96.jpg","url":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/wphb-cache\/gravatar\/9f9\/9f92d8b773ef5acf9b462d6dab41d783x96.jpg","contentUrl":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/wphb-cache\/gravatar\/9f9\/9f92d8b773ef5acf9b462d6dab41d783x96.jpg","caption":"Andr\u00e9 Felizardo"},"sameAs":["http:\/\/www.andrefelizardo.com.br"],"url":"https:\/\/www.andrefelizardo.com.br\/blog\/author\/andrefelizardo\/"}]}},"jetpack_featured_media_url":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2018\/04\/javascript-reduce.png","jetpack_shortlink":"https:\/\/wp.me\/p6EP66-g1","jetpack-related-posts":[{"id":943,"url":"https:\/\/www.andrefelizardo.com.br\/blog\/javascript-comecando-do-jeito-certo\/","url_meta":{"origin":993,"position":0},"title":"JavaScript &#8211; Come\u00e7ando do jeito certo","author":"Andr\u00e9 Felizardo","date":"30 de novembro de 2017","format":false,"excerpt":"O que \u00e9 JavaScript? JavaScript \u00e9 uma linguagem de programa\u00e7\u00e3o, que foi criada originalmente para rodar em navegadores. Na tr\u00edade do Front-end, a linguagem \u00e9 respons\u00e1vel por interagir com o usu\u00e1rio (como mensagens de erro e outros), sem a necessidade das informa\u00e7\u00f5es irem at\u00e9 o servidor. O que \u00e9 JavaScript?\u2026","rel":"","context":"Em &quot;Dev&quot;","block_context":{"text":"Dev","link":"https:\/\/www.andrefelizardo.com.br\/blog\/category\/dev\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2017\/11\/javascript-comecando_jeito_certo.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2017\/11\/javascript-comecando_jeito_certo.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2017\/11\/javascript-comecando_jeito_certo.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2017\/11\/javascript-comecando_jeito_certo.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":3010,"url":"https:\/\/www.andrefelizardo.com.br\/blog\/comparando-strings-em-javascript-e-porque-parece-errado\/","url_meta":{"origin":993,"position":1},"title":"Comparando strings em Javascript e porque parece errado","author":"Andr\u00e9 Felizardo","date":"28 de abril de 2025","format":false,"excerpt":"Muitas vezes Javascript \u00e9 motivo de piadas\/memes de algu\u00e9m dizendo que o funcionamento do Javascript \u00e9 estranho quando compara algumas coisas. Mas em geral, isso \u00e9 s\u00f3 falta de conhecimento de como a linguagem funciona por baixo dos panos. E uma desses tipos de compara\u00e7\u00f5es que parecem erradas \u00e9 a\u2026","rel":"","context":"Em &quot;Tecnologia&quot;","block_context":{"text":"Tecnologia","link":"https:\/\/www.andrefelizardo.com.br\/blog\/category\/tecnologia\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2025\/04\/Comparando-strings-Javascript.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2025\/04\/Comparando-strings-Javascript.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2025\/04\/Comparando-strings-Javascript.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2025\/04\/Comparando-strings-Javascript.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2025\/04\/Comparando-strings-Javascript.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2025\/04\/Comparando-strings-Javascript.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":35,"url":"https:\/\/www.andrefelizardo.com.br\/blog\/front-end-o-que-e\/","url_meta":{"origin":993,"position":2},"title":"Front-end. O que \u00e9?","author":"Andr\u00e9 Felizardo","date":"29 de janeiro de 2015","format":false,"excerpt":"Front-end. Voc\u00ea sabe o que \u00e9? O que ele faz? Alguns anos atr\u00e1s, o termo que mais se ouvia quanto ao profissional que trabalha com o desenvolvimento de sites era WebDesigner. E a fun\u00e7\u00e3o de WebDesigner era meio m\u00edstica, parecia ser um profissional que sabia de tudo um pouco, c\u00f3digos,\u2026","rel":"","context":"Em &quot;Tecnologia&quot;","block_context":{"text":"Tecnologia","link":"https:\/\/www.andrefelizardo.com.br\/blog\/category\/tecnologia\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2015\/01\/vaga-para-desenvolvedor-front-end-webdesign-agencia-diretriz-digital-marketing-branding.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2015\/01\/vaga-para-desenvolvedor-front-end-webdesign-agencia-diretriz-digital-marketing-branding.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2015\/01\/vaga-para-desenvolvedor-front-end-webdesign-agencia-diretriz-digital-marketing-branding.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":3893,"url":"https:\/\/www.andrefelizardo.com.br\/blog\/curadoria-de-janeiro-26\/","url_meta":{"origin":993,"position":3},"title":"Curadoria de Janeiro 26","author":"Andr\u00e9 Felizardo","date":"6 de fevereiro de 2026","format":false,"excerpt":"Toda vez que come\u00e7a um novo ano eu fico pensativo sobre o qu\u00e3o genial \u00e9 essa ideia de dividir o tempo. \u00c9 s\u00f3 um monte de dia atr\u00e1s do outro, mas esse ciclo de 12 meses acaba sempre motivando uns (e deprimindo alguns outros) na virada. Eu sou dos que\u2026","rel":"","context":"Em &quot;Tecnologia&quot;","block_context":{"text":"Tecnologia","link":"https:\/\/www.andrefelizardo.com.br\/blog\/category\/tecnologia\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2026\/02\/Curadoria-Janeiro-26.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2026\/02\/Curadoria-Janeiro-26.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2026\/02\/Curadoria-Janeiro-26.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2026\/02\/Curadoria-Janeiro-26.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2026\/02\/Curadoria-Janeiro-26.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2026\/02\/Curadoria-Janeiro-26.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":953,"url":"https:\/\/www.andrefelizardo.com.br\/blog\/javascript-variaveis\/","url_meta":{"origin":993,"position":4},"title":"JavaScript &#8211; Vari\u00e1veis: var, let e const","author":"Andr\u00e9 Felizardo","date":"3 de dezembro de 2017","format":false,"excerpt":"O que \u00e9 uma vari\u00e1vel? Vari\u00e1veis JavaScript s\u00e3o objetos onde n\u00f3s guardamos uma informa\u00e7\u00e3o apenas em tempo de execu\u00e7\u00e3o. Por exemplo: se voc\u00ea digita sua data de nascimento em um formul\u00e1rio, podemos guardar essa data em uma vari\u00e1vel para calcular a sua idade. Mas se voc\u00ea sair do site e\u2026","rel":"","context":"Em &quot;Dev&quot;","block_context":{"text":"Dev","link":"https:\/\/www.andrefelizardo.com.br\/blog\/category\/dev\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2017\/12\/javascript-variaveis.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2017\/12\/javascript-variaveis.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2017\/12\/javascript-variaveis.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2017\/12\/javascript-variaveis.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":4005,"url":"https:\/\/www.andrefelizardo.com.br\/blog\/curadoria-de-fevereiro-2026\/","url_meta":{"origin":993,"position":5},"title":"Curadoria de Fevereiro &#8211; 2026","author":"Andr\u00e9 Felizardo","date":"5 de mar\u00e7o de 2026","format":false,"excerpt":"Foi m\u00eas de carnaval, e fazendo essa curadoria eu sempre fico pensativo em quanta coisa se passa em 30 dias (nesse caso 28). Eu li bastante esse m\u00eas mas assisti umas coisas legais no Youtube. Abaixo como de costume minha curadoria dividida em N\u00e3o-Programa\u00e7\u00e3o e Programa\u00e7\u00e3o. N\u00e3o-Programa\u00e7\u00e3o V\u00eddeo - Abrace\u2026","rel":"","context":"Em &quot;Tecnologia&quot;","block_context":{"text":"Tecnologia","link":"https:\/\/www.andrefelizardo.com.br\/blog\/category\/tecnologia\/"},"img":{"alt_text":"Imagem de capa da curadoria representando v\u00e1rias coisas que podem ser referenciadas como v\u00eddeos, textos, filmes e outros","src":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2026\/03\/curadoria-fevereiro.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2026\/03\/curadoria-fevereiro.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2026\/03\/curadoria-fevereiro.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2026\/03\/curadoria-fevereiro.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2026\/03\/curadoria-fevereiro.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/www.andrefelizardo.com.br\/blog\/wp-content\/uploads\/2026\/03\/curadoria-fevereiro.png?resize=1400%2C800&ssl=1 4x"},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-json\/wp\/v2\/posts\/993","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-json\/wp\/v2\/comments?post=993"}],"version-history":[{"count":0,"href":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-json\/wp\/v2\/posts\/993\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-json\/wp\/v2\/media\/1005"}],"wp:attachment":[{"href":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-json\/wp\/v2\/media?parent=993"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-json\/wp\/v2\/categories?post=993"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.andrefelizardo.com.br\/blog\/wp-json\/wp\/v2\/tags?post=993"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}