Конвертировать один объект в массив объектов - PullRequest
1 голос
/ 21 марта 2019

У меня есть объект, который выглядит следующим образом:

var data = {first: '12/1/2019', second: '12/15/2019'}

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

var array = [ 
  {phase: 'first', date: '12/1/2019'}, 
  {phase: 'second', date: '12/15/2019'}
]

Я пробовал разные вещи, но самое близкое, что я получил, это что-то вроде:

var array = Object.entries(data).map(([key, value]) => ({key,value}));

Это дает мне массив объектов, таких как:

[ 
 {key: 'first', value: '12/1/2019'},
 {key: 'second', value: '12/15/2019'}
]

Я близко! но я не могу понять, как изменить ключ и значение на фазу и дату. Может кто-нибудь помочь мне?

Ответы [ 6 ]

6 голосов
/ 21 марта 2019

Вы можете просто переименовать имена ключей и значений параметров:

var array = Object.entries(data).map(([phrase, date]) => ({phrase,date}));
1 голос
/ 21 марта 2019

Попробуйте добавить метки в объект.

var data = {
  first: '12/1/2019',
  second: '12/15/2019'
}

var array = Object.entries(data).map(([key, value]) => ({
  phase: key,
  date: value
}))

console.log(array)
0 голосов
/ 21 марта 2019

Попробуйте следующее решение, используя для ... в для итерации по всем не-символьным перечисляемым свойствам объекта.

const data = { first: '12/1/2019', second: '12/15/2019' };
const dataset = [];

for (const key in data) {
  if (data.hasOwnProperty(key)) {
    const element = data[key];

    dataset.push({
      phase: key,
      date: element
    });
  }
}

console.log(dataset);
0 голосов
/ 21 марта 2019

Сначала извлеките key (фаза) и value (дата) из объекта данных с помощью Object.entries, затем используйте Array.reduce для накопления и формирования нового объекта в массив.

const data = {first: '12/1/2019', second: '12/15/2019'}
const arr = Object.entries(data).reduce((acc, [phase, date]) => acc.concat({phase, date}), []);
console.log(arr);
0 голосов
/ 21 марта 2019

Вы можете использовать map() на Object.keys()

var data = {first: '12/1/2019', second: '12/15/2019'}

let arr = Object.keys(data).map(x => ({phase:x,date:data[x]}))
console.log(arr)

Вы также можете использовать Object.entries() и map(), но назначать различные параметры разрушенным параметрам

var data = {first: '12/1/2019', second: '12/15/2019'}
let arr = Object.entries(data).map(([phase,date]) =>({phase,date}))
console.log(arr)
0 голосов
/ 21 марта 2019

Вы почти попробуйте, добавив ключ для возврата объекта

var data = {
  first: '12/1/2019',
  second: '12/15/2019'
}
var array = Object.entries(data).map(([key, value]) => ({
  phase: key,
  date: value
}));
console.log(array)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...