将对象转换为对象数组

时间:2017-03-13 15:22:19

标签: javascript arrays underscore.js

我试图将此对象转换为对象数组,并将对象键放入数组中每个对象的属性中。

这是输入:

var input = {
  "2017-03-13": ["Event 1", "Event 2"],
  "2017-03-14": ["Event 1", "Event 2"],
  "2017-03-15": ["Event 1", "Event 2"]
}

这是我想要的输出:

[
  {
    date: "2017-03-13",
    events: ["Event 1", "Event 2"]
  },
  {
    date: "2017-03-14",
    events: ["Event 1", "Event 2"]
  },
  {
    date: "2017-03-15",
    events: ["Event 1", "Event 2"]
  }
]

有关我如何处理此问题的任何想法?我也可以使用underscore.js。

3 个答案:

答案 0 :(得分:6)

Object.keys(input).map(key => {
    date: key,
    events: input[key]
});

答案 1 :(得分:2)

您可以尝试这样的事情:

var input = {
  "2017-03-13": ["Event 1", "Event 2"],
  "2017-03-14": ["Event 1", "Event 2"],
  "2017-03-15": ["Event 1", "Event 2"]
}

var output = [];
for(var key in input){
    output.push({
      date: key,
      events: input[key]
    })
}

console.log(output);

或者以更实用的方式:

var input = {
  "2017-03-13": ["Event 1", "Event 2"],
  "2017-03-14": ["Event 1", "Event 2"],
  "2017-03-15": ["Event 1", "Event 2"]
}

var output = Object.keys(input)
                   .map(function(key){
                       return { date: key, events: input[key]};
                   });
      
console.log(output);

答案 2 :(得分:2)

您可以使用Object.keys()map()执行此操作。



var input = {
  "2017-03-13": ["Event 1", "Event 2"],
  "2017-03-14": ["Event 1", "Event 2"],
  "2017-03-15": ["Event 1", "Event 2"]
}

var result = Object.keys(input).map(function(e) {
  return {date: e, events: input[e]}
})

console.log(result)




使用ES6,您可以使用箭头功能在一行中完成此操作。

var result = Object.keys(input).map(e => ({date: e, events: input[e]}))