Деконструировать значения объекта в массив - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь извлечь некоторые значения из объекта и поместить их в массив.Пока у меня есть это:

let obj = {
  a: 'a',
  b: 'b',
  c: 'c',
  d: 'd',
  e: 'e'
};
    
let arr = [{a, b, c} = obj];
    
console.log(arr);

Однако возвращается массив только с одним объектом:

[{a: 'a', b: 'b',c: 'c', d: 'd', e: 'e'}]

Мой желаемый результат будет:

['a', 'b', 'c']

кто-нибудь знает, что я делаю не так?

Ответы [ 3 ]

0 голосов
/ 26 сентября 2018

Для достижения ожидаемого использования ниже опции
Используйте () вокруг оператора присваивания, так как {} обрабатывается как блок, но не как литерал объекта во время назначения деструктурирования

let obj = {
  a: 'a',
  b: 'b',
  c: 'c',
  d: 'd',
  e: 'e'
};
//({a, b, c, ...rest} = obj) // to have access of rest of parameters
({a, b, c} = obj)
let arr = [a,b,c];

console.log(arr);

codepen - https://codepen.io/nagasai/pen/EeBBjQ?editors=1011

0 голосов
/ 26 сентября 2018

Вы можете сделать это встроенным, используя оператор запятой :

let obj = {
  a: 'a',
  b: 'b',
  c: 'c',
  d: 'd',
  e: 'e'
};
    
let arr = ({a, b, c} = obj, [a, b, c]);
    
console.log(arr);
0 голосов
/ 26 сентября 2018

Вы можете взять значения нового объекта с свойствами короткой руки .

let obj = { a: 'a', b: 'b', c: 'c', d: 'd', e: 'e' },
    { a, b, c } = obj,
    arr = Object.values({ a, b, c });

console.log(arr);

Или взять нужные ключи для нового массива.

let obj = { a: 'a', b: 'b', c: 'c', d: 'd', e: 'e' },
    arr = ['a', 'b', 'c'].map(k => obj[k]);

console.log(arr);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...