Фрагмент для создания объекта из деструктурированного массива

Например, у меня был массив с тремя номерами:

var arr = [124, -50, 24];

и мне нужно преобразовать этот массив в объект:

{
   x: 124,
   y: -50,
   z: 24
}

Я не хочу использовать для этого синтаксис "старого стиля", например:

{
  x: arr[0],
  y: arr[1],
  z: arr[2]
}

поэтому на данный момент я использую этот синтаксис:

const [x, y, z] = [...arr];
const obj = {x, y, z};

Но есть ли способ сделать это с помощью прямого массива dectructuring для объекта без временных переменных?

Ответ 1

Как уже упоминалось в комментарии, вы можете использовать выражение немедленного вызова функции (IIFE), чтобы создать объект за один шаг, но он менее читабелен, чем несколько шагов.

const arr = [124, -50, 24];
const obj = (([x, y, z]) => ({ x, y, z }))(arr);

console.log(obj);

Ответ 2

Просто используйте это

let obj = {...arr}

Ответ 3

Вы также можете сделать

const obj = {};
([obj.x, obj.y, obj.z] = arr);

чтобы избежать временных переменных, но я бы поставил под вопрос, улучшается ли это.