Разрушить объект в массив - PullRequest
0 голосов
/ 22 октября 2019

У меня есть этот объект

const foo = {
    a: 'kitten',
    b: 'puppy',
    c: 'lion'
};

Уничтожение его по переменным происходит следующим образом:

const { a, b, c } = foo;

Есть ли одна строка, как разобрать это в массив, чтобы результатist

const array = [a, b, c];

Ответы [ 4 ]

1 голос
/ 22 октября 2019

Я не знаю "однострочника", который использует деструктуризацию.

Вместо этого вы можете использовать один из них (который не использует деструктуризацию):

(1)

const array = [foo.a, foo.b, foo.c]

(2, как указано @Sebastian Simon)

const array = Object.values(foo);

(3, как указано @Sebastian Simon)

const array = ['a', 'b', 'c'].map(k => foo[k]);
0 голосов
/ 22 октября 2019
   Object.entries(obj).forEach( ([key, value]) => { 
   console.log(`${key}: ${value}`) 
  • Здесь Object.entries () дает массив пары ключ: значение. Вы можете использовать результаты согласно вашему требованию.
0 голосов
/ 22 октября 2019

Нет деструктуризации в массив из объекта.

Но если вы хотите, чтобы все ключи / значения объекта в формате массива, вы могли бы использовать эти:

let obj = {
    a: 'kitten',
    b: 'puppy',
    c: 'lion'
};

let keyArray = Object.keys(obj); 
// keyArray = ['a','b','c']
let valuesArray = Object.values(obj);
// valuesArray = ['kitten', 'puppy', 'lion'];

Обратите внимание, что порядок массива не обязательно соответствует порядку объекта.

0 голосов
/ 22 октября 2019

Вы можете взять функцию, деструктурировать нужные свойства и вернуть массив с требуемым порядком.

const
    getABC = ({ a, b, c }) => [a, b, c],
    foo = { a: 'kitten', b: 'puppy', c: 'lion' };

console.log(getABC(foo));
...