Как деструктурировать массив изнутри объекта в JavaScript? - PullRequest
0 голосов
/ 16 мая 2019

У меня есть такой объект:

obj = {'id': 1, a: [1, 2, 3]}

Я хочу деструктурировать и получить массив из obj

arr = {...obj.a}

Я получаю:

{0: 1, 1: 2, 2: 3}

который не является массивом

Как получить сам массив?

Ответы [ 4 ]

4 голосов
/ 16 мая 2019

Вы распространяете массив внутри {}. Это создает объект с индексами массива в качестве ключей. Вот почему вы получаете {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)
1 голос
/ 16 мая 2019

Вы можете выполнить деструктуризацию в массив, назначив массив массиву с синтаксисом отдыха.

var obj = { id: 1, a: [1, 2, 3] },
    [...arr] = obj.a;

console.log(arr);
0 голосов
/ 16 мая 2019

Используйте фигурные скобки вместо фигурных скобок, чтобы развернуло в новый массив:

const obj = {'id': 1, a: [1, 2, 3]}    
const arr = [...obj.a]
console.log(arr)
0 голосов
/ 16 мая 2019

Почти - наоборот - :)

let {a: arr} = {'id': 1, a: [1, 2, 3]}

...