Use unshift. É como push, exceto que ele adiciona elementos ao início da matriz em vez do final.
unshift/ push- adiciona um elemento ao início / fim de uma matriz
shift/ pop - remove e retorna o primeiro / último elemento de uma matriz
Um diagrama simples ...
unshift -> array <- push
shift <- array -> pop
e gráfico:
add remove start end
push X X
pop X X
unshift X X
shift X X
Confira a documentação da matriz MDN . Praticamente todas as linguagens que têm a capacidade de empurrar / pop elementos de uma matriz também têm a capacidade de desviar / mudar (às vezes chamado push_front/ pop_front) elementos, você nunca precisará implementá-los.
Conforme apontado nos comentários, se você deseja evitar a mutação de sua matriz original, pode usar concat, que concatena duas ou mais matrizes juntas. Você pode usar isso para empurrar funcionalmente um único elemento para a frente ou para trás de uma matriz existente; para fazer isso, você precisa transformar o novo elemento em uma única matriz de elementos:
const array = [ 3, 2, 1 ]
const newFirstElement = 4
const newArray = [newFirstElement].concat(array) // [ 4, 3, 2, 1 ]
concattambém pode acrescentar itens. Os argumentos para concatpodem ser de qualquer tipo; eles estão implicitamente agrupados em uma matriz de elemento único, se ainda não forem uma matriz:
const array = [ 3, 2, 1 ]
const newLastElement = 0
// Both of these lines are equivalent:
const newArray1 = array.concat(newLastElement) // [ 3, 2, 1, 0 ]
const newArray2 = array.concat([newLastElement]) // [ 3, 2, 1, 0 ]
pushinstruções seguidas por uma chamada parareverse, em vez de chamarunshifto tempo todo.