Я немного растерялся в своей игре по функциональному программированию.
У меня есть такой объект:
const answers = {1: 'first', 2:'second', 3:'third', 4:'fourth'}
Я хотел бы преобразовать объект в массив объектов, подобных этому.
const arrayOfAnswers = [{1:'first'}, {2:'second'}, {3:'third'}, {4:'fourth'}]
Каким было бы простое решение для достижения этой цели?
Вы также можете использовать Array.prototype.reduce метод.
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]}), []));
Вы можете сделать это, используя итерацию ключей объекта. Я дам решение ES5, предполагая:
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);
Вы можете нанести карту с уничтожением для ключа / значения.
var answers = { 1: 'first', 2: 'second', 3: 'third', 4: 'fourth' }, array = Object.entries(answers).map(([k, v]) => ({ [k]: v })); console.log(array);
Предполагая, что вы имели в виду
answers = {1: "first", 2:"second" , 3:"third", 4:"fourth"};
Используйте Object.entries и map
Object.entries
map
var output = Object.entries(answers).map( s => ({[s[0]]: s[1]}) )