【问题标题】:Turn object into array of objects将对象变成对象数组
【发布时间】:2017-03-13 15:22:19
【问题描述】:

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

这是输入:

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。

【问题讨论】:

    标签: javascript arrays underscore.js


    【解决方案1】:
    Object.keys(input).map(key => {
        date: key,
        events: input[key]
    });
    

    【讨论】:

      【解决方案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]}))
      

      【讨论】:

        【解决方案3】:

        你可以试试这样的:

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

        【讨论】:

          猜你喜欢
          • 2016-03-20
          • 1970-01-01
          • 1970-01-01
          • 2018-04-25
          • 2019-05-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多