--- title: Array.prototype.shift() slug: Web/JavaScript/Reference/Global_Objects/Array/shift tags: - Array - JavaScript - Prototype - Reference - metodo translation_of: Web/JavaScript/Reference/Global_Objects/Array/shift --- <div>{{JSRef("Global_Objects", "Array")}}</div> <h2 id="Summary" name="Summary">Sumário</h2> <p>O método <strong style="font-family: courier new,andale mono,monospace; line-height: 1.5;">shift()</strong><span style="line-height: 1.5;">remove o <strong>primeiro</strong> elemento de um array e retorna esse elemento. Este método muda o tamanho do array.</span><strong style="font-family: courier new,andale mono,monospace; line-height: 1.5;"> </strong></p> <p>{{EmbedInteractiveExample("pages/js/array-shift.html")}}</p> <div class="hidden"> <p>O código deste exemplo interativo está salvo em um repositório do GitHub. Se você quiser contribuir com o projeto de exemplos interativos, clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> e envie-nos um pull request.</p> </div> <h2 id="Syntax" name="Syntax">Sintaxe</h2> <pre class="syntaxbox notranslate"><code><var>arr</var>.shift()</code></pre> <h3 id="Valor_de_retorno">Valor de retorno</h3> <p>O elemento removido do array; {{jsxref("undefined")}} se o array estiver vazio.</p> <h2 id="Description" name="Description">Descrição</h2> <p>O método shift remove o elemento de índice zero, diminui em 1 os indices dos demais valores e retorna o valor removido. Se a propriedade {{jsxref("Array.length", "length")}} for 0, então {{jsxref("undefined")}} é retornado.</p> <p><code>shift</code> é intencionalmente genérico; esse método pode ser {{jsxref("Function.call", "chamado", "", 1)}} ou {{jsxref("Function.apply", "aplicado", "", 1)}} para objetos parecidos com arrays. Objetos que não contém a propriedade <code>length </code>representando o tamanho de uma série consecutiva, começando em zero, podem não se comportar de maneira correta.</p> <h2 id="Examples" name="Examples">Exemplos</h2> <h3 id="Example_Removing_an_element_from_an_array" name="Example:_Removing_an_element_from_an_array">Removendo um elemento de array</h3> <p>O código a seguir mostra o array <code>minhaLista</code> antes e depois de remover seu primeiro elemento. Ele também mostra o elemento removido.</p> <pre class="brush: js notranslate">var minhaLista = ['anjo', 'casa', 'mandarim', 'medico']; console.log('minhaLista antes: ' + minhaLista); // minhaList antes: ['anjo', 'casa', 'mandarim', 'medico'] var shifted = minhaLista.shift(); console.log('minhaLista depois: ' + minhaLista); // minhaList depois: ['casa', 'mandarim', 'medico'] console.log('Elemento removido: ' + shifted); // Elemento removido: anjo </pre> <h3 id="Example_Removing_an_element_from_an_array" name="Example:_Removing_an_element_from_an_array">Usando o método shift() dentro de um loop de while</h3> <p>O médodo shift() é frequentemente usado como condição dentro de um loop de while. No exemplo a seguir, cada iteração removerá o elemento seguinte do array, até que ele esteja vazio:</p> <pre class="brush: js notranslate">var nomes = ["André", "Eduardo", "Paulo", "Cris", "João"]; while( (i = nomes.shift()) !== undefined ) { console.log(i); } // André Eduardo Paulo Cris João</pre> <h2 id="Specifications" name="Specifications">Especificações</h2> <table class="standard-table"> <tbody> <tr> <th scope="col">Especificação</th> <th scope="col">Estado</th> <th scope="col">Comentário</th> </tr> <tr> <td>ECMAScript 3rd Edition</td> <td>Standard</td> <td>Implementação inicial. Implementado no JavaScript 1.2.</td> </tr> <tr> <td>{{SpecName('ES5.1', '#sec-15.4.4.9', 'Array.prototype.shift')}}</td> <td>{{Spec2('ES5.1')}}</td> <td></td> </tr> <tr> <td>{{SpecName('ES6', '#sec-array.prototype.shift', 'Array.prototype.shift')}}</td> <td>{{Spec2('ES6')}}</td> <td></td> </tr> </tbody> </table> <h2 id="Browser_compatibility" name="Browser_compatibility">Compatibilidade de Browser</h2> <div>{{Compat("javascript.builtins.Array.shift")}}</div> <h2 id="See_also" name="See_also">Veja também</h2> <ul> <li>{{jsxref("Array.prototype.push()")}}</li> <li>{{jsxref("Array.prototype.pop()")}}</li> <li>{{jsxref("Array.prototype.unshift()")}}</li> <li>{{jsxref("Array.prototype.concat()")}}</li> </ul>