【问题标题】:Changing time format in an array using moment and angularjs and lodash使用 moment 和 angularjs 和 lodash 更改数组中的时间格式
【发布时间】:2017-12-07 09:32:01
【问题描述】:

我有 Json 数据,其中包含基于日期的计时。

obj = {
"2017-12-08": [
    "2017-12-08T13:00:00+0530",
    "2017-12-08T15:00:00+0530",
    "2017-12-08T15:30:00+0530",
    "2017-12-08T16:00:00+0530"
],
"2017-12-09": [
    "2017-12-09T09:00:00+0530",
    "2017-12-09T09:30:00+0530",
    "2017-12-09T10:00:00+0530"
],
"2017-12-10": [
    "2017-12-10T09:00:00+0530",
    "2017-12-10T09:30:00+0530",
    "2017-12-10T10:00:00+0530",
    "2017-12-10T10:30:00+0530"
]
}

我想把这个json对象转换成下面的格式:

obj = {
"2017-12-08": ["13:00","15:00","15:30","16:00"],
"2017-12-09": ["09:00","09:30","10:00"],
"2017-12-10": ["09:00","09:30","10:00","10:30"]
}

目前我正在使用 for 循环遍历数组中的每个元素,然后使用替换每个元素

obj[Object.keys(obj)[date]][time]=moment(obj[Object.keys(obj)[date]][time]).format(HH:mm);

我如何使用 lodash、moment 和 angularjs 来实现这一点?

【问题讨论】:

    标签: arrays angularjs lodash angular-moment


    【解决方案1】:

    您只需要 momentjs,只需将日期格式化为所需格式。不需要 AngularJS 和 lodash。

    var obj = {
      "2017-12-08": [
        "2017-12-08T13:00:00+0530",
        "2017-12-08T15:00:00+0530",
        "2017-12-08T15:30:00+0530",
        "2017-12-08T16:00:00+0530"
      ],
      "2017-12-09": [
        "2017-12-09T09:00:00+0530",
        "2017-12-09T09:30:00+0530",
        "2017-12-09T10:00:00+0530"
      ],
      "2017-12-10": [
        "2017-12-10T09:00:00+0530",
        "2017-12-10T09:30:00+0530",
        "2017-12-10T10:00:00+0530",
        "2017-12-10T10:30:00+0530"
      ]
    };
    
    Object.keys(obj).forEach(key => {
      obj[key] = obj[key].map(item => {
        return moment(item).format("HH:mm");
      });
    });
    
    console.log(obj);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.3/moment.min.js"></script>

    这会就地修改对象。如果您不希望这样,请先克隆对象,然后再转换克隆。

    【讨论】:

      【解决方案2】:

      您可以使用 _.forOwn() 循环您的对象属性,_.map() 循环每个 array 项目并使用 momentjs 更改项目格式。

      这应该是你的代码:

      _.forOwn(obj, function(value, key) {
         obj[key] = _.map(value, function(item) {
            return moment(item).format("HH:mm");
         });
      });
      

      演示:

      var obj = {
        "2017-12-08": [
          "2017-12-08T13:00:00+0530",
          "2017-12-08T15:00:00+0530",
          "2017-12-08T15:30:00+0530",
          "2017-12-08T16:00:00+0530"
        ],
        "2017-12-09": [
          "2017-12-09T09:00:00+0530",
          "2017-12-09T09:30:00+0530",
          "2017-12-09T10:00:00+0530"
        ],
        "2017-12-10": [
          "2017-12-10T09:00:00+0530",
          "2017-12-10T09:30:00+0530",
          "2017-12-10T10:00:00+0530",
          "2017-12-10T10:30:00+0530"
        ]
      };
      
      _.forOwn(obj, function(value, key) {
        obj[key] = _.map(value, function(item) {
          return moment(item).format("HH:mm");
        });
      });
      
      console.log(obj);
      <script src="https://cdn.jsdelivr.net/npm/lodash@4.17.4/lodash.min.js"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.3/moment.min.js"></script>

      【讨论】:

        【解决方案3】:

        或者你可以使用_.mapValues

        const obj = {
          "2017-12-08": [
            "2017-12-08T13:00:00+0530",
            "2017-12-08T15:00:00+0530",
            "2017-12-08T15:30:00+0530",
            "2017-12-08T16:00:00+0530"
          ],
          "2017-12-09": [
            "2017-12-09T09:00:00+0530",
            "2017-12-09T09:30:00+0530",
            "2017-12-09T10:00:00+0530"
          ],
          "2017-12-10": [
            "2017-12-10T09:00:00+0530",
            "2017-12-10T09:30:00+0530",
            "2017-12-10T10:00:00+0530",
            "2017-12-10T10:30:00+0530"
          ]
        };
        
        const res = _.mapValues(obj, el => el.map(d => moment(d).format('HH:mm')));
        
        console.log(res);
        <script src="https://cdn.jsdelivr.net/npm/lodash@4.17.4/lodash.min.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.3/moment.min.js"></script>

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-05-02
          • 2016-09-15
          • 2018-02-17
          • 1970-01-01
          • 1970-01-01
          • 2021-11-03
          相关资源
          最近更新 更多