У меня есть такой объект:
obj = {'id': 1, a: [1, 2, 3]}
Я хочу деструктурировать и получить массив из obj
obj
arr = {...obj.a}
Я получаю:
{0: 1, 1: 2, 2: 3}
который не является массивом
Как получить сам массив?
Вы распространяете массив внутри {}. Это создает объект с индексами массива в качестве ключей. Вот почему вы получаете {0: 1, 1: 2, 2: 3}
{}
const a = [ 1, 2 ] console.log({ ...a })
Если вы хотите получить свойство в переменную, это правильный синтаксис :
const { propertyName } = yourObject // if you want to have a variable name which is different than the propertyName const { propertyName: someOtherVariable } = yourObject
Вот рабочий фрагмент:
const obj = {'id': 1, a: [1, 2, 3] } const { a: arr } = obj; // this is same as: const arr = obj.a console.log(arr)
Вы можете выполнить деструктуризацию в массив, назначив массив массиву с синтаксисом отдыха.
var obj = { id: 1, a: [1, 2, 3] }, [...arr] = obj.a; console.log(arr);
Используйте фигурные скобки вместо фигурных скобок, чтобы развернуло в новый массив:
const obj = {'id': 1, a: [1, 2, 3]} const arr = [...obj.a] console.log(arr)
Почти - наоборот - :)
let {a: arr} = {'id': 1, a: [1, 2, 3]}