Вы можете использовать:
var head = arr[0];
var tail = arr.slice(1);
Или в ES6:
const [head, ...tail] = arr;
Я нашел о работе массива JavaScript Unshift, shift, push, pop
Однако все эти операции мутируют массив.
Есть ли способ использовать эти функции, не вызывая мутации исходных данных?
Как-то я чувствую, что чтение данных не должно вызывать мутации.
Вы можете использовать:
var head = arr[0];
var tail = arr.slice(1);
Или в ES6:
const [head, ...tail] = arr;
Принятый ответ хорош, но для более функционального подхода:
Я бы использовал find, который возвращает первый элемент, возвращающий значение true-thy в его предикат.
Если вы уверены, что ваши ценности верны, вы можете написать это следующим образом:
arr.find(Boolean)
Если вы хотите получить первое значение, независимо от его значения, вы можете записать его следующим образом:
arr.find(_ => true)
Как и остальные, используйте срез
arr.slice(1);