将单个对象转换为对象数组

时间:2019-03-21 04:58:00

标签: javascript arrays object

我有一个看起来像这样的对象:

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 个答案:

答案 0 :(得分:6)

您实际上可以重命名键和值参数名称:

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

答案 1 :(得分:1)

尝试在对象中添加标签。

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)

答案 2 :(得分:0)

您几乎可以尝试添加键以返回对象

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)

答案 3 :(得分:0)

您可以在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)

答案 4 :(得分:0)

首先通过 Object.entries 从数据对象中提取key(阶段)和value(日期),然后使用 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);

答案 5 :(得分:0)

使用for...in尝试以下解决方案,以迭代对象的所有非符号可枚举属性。

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);