Разрушающее присваивание с объектами внутри массива - PullRequest
0 голосов
/ 20 апреля 2019

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

[

{a : 1},
{a : 1},
{a : 1},
{a : 1}

]

Здесь мне нужен массив: [1,1,1,1]

Ответы [ 5 ]

1 голос
/ 20 апреля 2019

Вы можете использовать предстоящий Array#flatMap

var array = [{ a: 1 }, { a: 1 }, { a: 1 }, { a: 1 }];
    result = array.flatMap(Object.values);

console.log(result);
1 голос
/ 20 апреля 2019

Разрушение, которое потребует создания 4-х отдельных переменных, которые затем будут объединены в массив. Это было бы очень влажно, и не имело бы особого смысла, но если бы у вас было до:

const arr = [
  {a : 1},
  {a : 1},
  {a : 1},
  {a : 1}
]
const [{ a: item1 }, { a: item2 }, {a: item3}, {a: item4 }] = arr;
const newArrOfAs = [item1, item2, item3, item4];
console.log(newArrOfAs);

Ваш исходный код, использующий reduce, лучше, но еще более уместным будет использовать Array.prototype.map, поскольку элементы входного и выходного массивов взаимно однозначны:

const arr = [
  {a : 1},
  {a : 1},
  {a : 1},
  {a : 1}
]
const newArrOfAs = arr.map(({ a }) => a);
console.log(newArrOfAs);
0 голосов
/ 20 апреля 2019

Вы должны просто использовать map:

 

const arr = [
{a : 1},
{a : 1},
{a : 1},
{a : 1}
];

const res = arr.map(({ a }) => a);

console.log(res);
0 голосов
/ 20 апреля 2019

Это должно работать.Вы можете использовать foreach или карту

const array = [
  {a : 1},
  {a : 1},
  {a : 1},
  {a : 1}
]
let newArray = []
array.forEach(function(element) {
  newArray.push(element.a)
});
console.log(newArray)
0 голосов
/ 20 апреля 2019

Вы бы использовали .map():

const a = [

  {
    a: 1
  },
  {
    a: 1
  },
  {
    a: 1
  },
  {
    a: 1
  }

];


const b = a.map(val => val.a);

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