Aqui está mais arte Javascript, se você veio procurá-la
No espírito de outra resposta que usou reduceRight()
, mas mais curta:
[3, 2, 1, 5].reduceRight(a => a);
Ele se baseia no fato de que, caso você não forneça um valor inicial, o último elemento será selecionado como o inicial (verifique os documentos aqui ). Como o retorno de chamada continua retornando o valor inicial, o último elemento será o retornado no final.
Lembre-se de que isso deve ser considerado arte Javascript e não é o caminho que eu recomendaria, principalmente porque é executado em O (n) tempo, mas também porque prejudica a legibilidade.
E agora a resposta séria
A melhor maneira que vejo (considerando que você deseja que seja mais conciso do que array[array.length - 1]
) é esta:
const last = a => a[a.length - 1];
Então basta usar a função:
last([3, 2, 1, 5])
A função é realmente útil no caso de você estar lidando com uma matriz anônima como a [3, 2, 1, 5]
usada acima, caso contrário você teria que instanciar duas vezes, o que seria ineficiente e feio:
[3, 2, 1, 5][[3, 2, 1, 5].length - 1]
Ugh.
Por exemplo, aqui está uma situação em que você tem uma matriz anônima e precisa definir uma variável, mas pode usar last()
:
last("1.2.3".split("."));
const [lastItem] = arr.slice(-1)