Заголовок JavaScript и хвост на массиве без мутации

Я нашел о действиях массива JavaScript Unshift, shift, push, pop

Однако все эти операции мутируют массив.

Есть ли способ использовать эти функции, не вызывая мутации исходных данных?

Как-то я чувствую, что чтение данных не должно вызывать мутации.

Ответ 1

Вы можете использовать:

var head = arr[0];
var tail = arr.slice(1);

Или в ES6:

const [head, ...tail] = arr;

Ответ 2

Принятый ответ хорош, но для более функционального подхода:

Руководители

Я бы использовал find, который возвращает первый элемент, возвращающий значение true-thy в его предикат.

Если вы уверены, что ваши значения истинны, вы можете записать его следующим образом:

arr.find(Boolean)

Если вы хотите получить первое значение, независимо от его значения, вы можете записать его следующим образом:

arr.find(_ => true)

Хвосты

Как и остальные, используйте срез

arr.slice(1);