Сделать массив объектов из одного объекта - PullRequest
0 голосов
/ 15 мая 2018

Я немного растерялся в своей игре по функциональному программированию.

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

const answers = {1: 'first', 2:'second', 3:'third', 4:'fourth'}

Я хотел бы преобразовать объект в массив объектов, подобных этому.

const arrayOfAnswers = [{1:'first'}, {2:'second'}, {3:'third'}, {4:'fourth'}]

Каким было бы простое решение для достижения этой цели?

Ответы [ 4 ]

0 голосов
/ 15 мая 2018

Вы также можете использовать Array.prototype.reduce метод.

const answers = {1: 'first', 2:'second', 3:'third', 4:'fourth'};

console.log(Object.entries(answers).reduce((acc, v) => acc.concat({[v[0]]: v[1]}), []));
0 голосов
/ 15 мая 2018

Вы можете сделать это, используя итерацию ключей объекта. Я дам решение ES5, предполагая:

  1. Другие будут давать решение ES6.
  2. Вы предположили answers = {1: "first", 2: "second" , 3: "third", 4: "fourth"}

var answers = {
  1: "first",
  2: "second",
  3: "third",
  4: "fourth"
};
var finalAnswers = [];
var ansKeys = Object.keys(answers);
for (var i = 0; i < ansKeys.length; i++) {
  obj = {};
  obj[ansKeys[i]] = answers[ansKeys[i]];
  finalAnswers.push(obj);
}
console.log(finalAnswers);
0 голосов
/ 15 мая 2018

Вы можете нанести карту с уничтожением для ключа / значения.

var answers = { 1: 'first', 2: 'second', 3: 'third', 4: 'fourth' },
    array = Object.entries(answers).map(([k, v]) => ({ [k]: v }));
    
console.log(array);
0 голосов
/ 15 мая 2018

Предполагая, что вы имели в виду

answers = {1: "first", 2:"second" , 3:"third", 4:"fourth"};

Используйте Object.entries и map

var output = Object.entries(answers).map( s => ({[s[0]]: s[1]}) )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...